Flash与3D编程探秘(五)- 摄像机旋转和移动
2008-11-12 11:51:23 来源:WEB开发网移动和旋转角度的图解
需要注意的是,当你首先旋转摄像机,然后向后或者向前移动摄像机,那么摄像机是沿着摄像机旋转过后的角度运动的,至于移动量和物体到现在摄像机的距离,我们一样可以使用三角函数得到(三角函数!Nice!)。下面我们就看一个应用的例子:
定点旋转摄像机,WS前后移动摄像机,AD旋转
动画制作步骤:
1. 重复前面的3步。
//constants
varMAX_OBJ=100;
varPI=3.1415926535897932384626433832795;
varDISTANCE_Z=20; //thezdistancetoyourcamera
//sameasusual
varorigin=newObject();
origin.x=stage.stageWidth/2;
origin.y=stage.stageHeight/2;
origin.z=0;
varscene=newSprite();
scene.x=origin.x;
scene.y=origin.y;
this.addChild(scene);
varcamera=newObject();
camera.x=0;
camera.y=0;
camera.z=0;
camera.panning=0;
varmovement=0;
varfocal_length=300;
varpan_left;
varpan_right;
varmove_forward;
varmove_backward;
//nowcreatelotsofballsaroundyourcamera
for(vari=0;i<MAX_OBJ;i++)
{
varball=newSphere();
ball.angle=Math.random()*(0-PI*2)+PI*2; //thisistherotateangleonthexzplane
ball.dist_center=(MAX_OBJ-i)*DISTANCE_Z; //thezdistancetoyourcamera
ball.x_3d=Math.cos(ball.angle)*ball.dist_center; //thenweusetrigtogetx
ball.z_3d=Math.sin(ball.angle)*ball.dist_center; //andz
ball.y_3d=Math.random()*(-300-300)+300; //nowputtheballatrandomy
scene.addChild(ball); //addtheballtothecollection
}
- ››FLASH不等于运算符!=的使用实例
- ››FLASH不全等运算符!==
- ››FLASH字符串分隔符运算符
- ››FLASH% 模运算符
- ››Flash+、++、+= 加法运算符
- ››Flash, 逗号运算符
- ››flash中的-、--、-=减法运算符
- ››Flash的-Infinity 常数、.点运算符、/ 除法运算符...
- ››Flash两种注释方法/*..*/ 和// 注释行分隔符运算符...
- ››Flash的/=除法赋值运算符、=赋值运算符、== 等于运...
- ››Flash之?: 条件运算符、^ 按位 XOR 运算符、^= 按...
- ››Flash的_framesloaded代码示例
更多精彩
赞助商链接