4. 弹性
弹性,一般是指物体接触到到某个边界,所进行的回弹,在FLASH中,我们需要做的是设置好边界,以及物体回弹的方向。那么如何确定它回弹的方向呢,我们设定一个边界,当小球超出边界时小球回弹,也就是方向改变了。以x轴为例应为:vx*=-1; 实际上你可能发现它实际上就是 vx=-vx;
代码: //设定边界 top=0; left=0; right=400; bottom=300; vx=10; vy=10; onEnterFram=function(){ my_mc._x+=vx; my_mc._y+=vy; //下面代码检测小球是否到达边界,如果已到边界,重设小球的正确做坐,并使其回弹, if(my_mc._x+my_mc._width/2>right){ my_mc._x=right-my_mc._width/2; vx*=-1; } if(my_mc._x-my_mc._width/2<left){ my_mc._x=left+mc_mc._width/2; vx*=-1; } if(my_mc._y-my_mc._height/2<top){ my_mc._y=top+my_mc._height/2; vy*=-1; } if(my_mc._y+my_mc._height/2>bottom){ my_mc._y=bottom-my_mc._height/2; vy*=-1; } }
演示:
通过演示我们发现小球在碰到边界会不断的回弹。
*注意:上面代码中的my_mc._x,my_mc._y的坐标都是指my_mc的中心点,也就是说my_mc的注册点在中心,如果你在制作过程中发现与本演示不同,那一定是你的my_mc注册点没有在中心上。
弹性中的能量损失
在上面的例子,小球在回弹时我们设定当碰到边界时直接回弹,也就是vx*=-1;并没有能量的损失,但在现实生活中,小球在回弹时要有一定的能量损失,其中还要有重力加速度的影响,通过上面的例子我们可以得出结论,当回弹速度设为1时无能量损失,其中的负号只是代表方向,当小于1时会产生能量损失,也就是我们通常说的摩擦,如:vx*=-0.8;同时不要忘了在现实生活小球还会受重力加速度的影响。
代码: top=0; left=0; right=400; bottom=300; //设定重力加速度变量garv garv=.5; vx = 10; vy = 10; onEnterFrame = function () { //y轴方向的加速度 vy+=garv; my_mc._x += vx; my_mc._y += vy; if(my_mc._x+my_mc._width/2>right){ my_mc._x=right-my_mc._width/2; vx*=-0.8; } if(my_mc._x-my_mc._width/2<left){ my_mc._x=left+my_mc._width/2; vx*=-0.8; } if(my_mc._y-my_mc._height/2<top){ my_mc._y=top+my_mc._height/2; vy*=-0.8; } if(my_mc._y+my_mc._height/2>bottom){ my_mc._y=bottom-my_mc._height/2; vy*=-0.8; } };
演示:
5.摩擦力
摩擦力的应用相对比较简单,我们需要定义一个摩擦系数,通常它的值为小于1,然后将它与速度相乘,也就是前面在弹性时所提到的能量损失。
代码: fraction=0.95; vx=10; vy=10; onEnterFrame=function(){ vx*=fraction; vy*=fraction; my_mc._x+=vx; my_mc._y+=vy; } 演示:
出处:WebStudio
责任编辑:qhwa
上一页 加速度和重力 下一页 拖动与抛、缓冲
◎进入论坛Flash专栏版块参加讨论
|