Flash与3D编程探秘(五)- 摄像机旋转和移动
2008-11-12 11:51:23 来源:WEB开发网//nowcreatelotsofballsaroundyourcamera
for(vari=0;i<MAX_OBJ;i++)
{
varball=newSphere();
ball.angle=Math.random()*(0-PI*2)+PI*2; //thisistherotateangleonthexzplane
ball.dist_center=140+(MAX_OBJ-i)*DISTANCE; //thedistancetoyourcamera
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()*(-240-240)+240; //nowputtheballatrandomy
scene.addChild(ball); //addtheballtothecollection
}
4. 对于每一个物体,我们在摄像机转动角度时刷新它的大小和位置。于是我们下一步写一个函数来达到目的,首先我们要确定小P相对于我们的摄像机的旋转角度。然 后我们根据这个角度和他们之间的垂直距离,算出它到摄像机的x,z和y的距离。最后,还是运用我们之前学过的算法,缩放和移动物体。
//updateballsizeandposition
functionupdate(obj)
{
//gettheanglerelativetoyourcamerapanningangle
varangle=obj.angle-camera.panning;
varx_pos=Math.cos(angle)*obj.dist_center-camera.x; //usetrigcalculatethex
varz_pos=Math.sin(angle)*obj.dist_center-camera.z; //andz
vary_pos=obj.y_3d-camera.y; //calculatetherelativey
if(z_pos>0) //iftheballisinfrontofthecamera
{
if(!obj.visible)
obj.visible=true; //maketheballvisibleanyway
varscale=focal_length/(focal_length+z_pos); //calthescaleoftheball
obj.x=x_pos*scale; //calcualtethexpositioninacameraview
obj.y=y_pos*scale; //andyposition
obj.scaleX=obj.scaleY=scale; //scaletheballtoaproperstate
}
else
{
obj.visible=false;
}
}
- ››flash文件的压缩方法(swf文件压缩瘦身)
- ››Flash鼠绘教程:临摹徐悲鸿的骏马图
- ››Flash实例:AS3制作茶杯震动动画
- ››Flash AS 3.0实例教程:Main类打造发散效果
- ››Flash cs3仿真艺术设计3.6:运用遮罩打造焦点效果...
- ››Flash cs3仿真艺术设计4.1:阴影的基本运用
- ››Flash CS4教程:3d工具实例和骨骼工具
- ››flash加载外部文本文件的3种方法
- ››flash在有限的页面内制作大的地图
- ››Flash教程:AS代码制作计时器方法
- ››Flash AS教程:propertydata问题解决
- ››FlashFXP v4.0.0 Build 1486 RC2 [烈火汉化]
更多精彩
赞助商链接