一、
速度即目标向某个方向移动的快慢,在坐标系里面有X轴和Y轴速度。用vx和vy表示。设某个物体为Ball,则Ball移动的速度为:
Ball.x+=vx;
Ball.y+=vy;
加速度即改变速度值的描述,一般用ax、ay表示。带上加速度的Ball的运动表示如下:
vx+=ax;
vy+=ay;
Ball.x+=vx;
Ball.y+=vy;
二、
摩擦力即阻碍运动的力,在运动算法里面表现为减小现有速度。设摩擦力为friction,则有速度为speed,与X轴的夹角为angle。则有:
speed=Math.sqrt(vx*vx+vy*vy);
angle=Math.atan2(vy,vx);
再根据判断确定speed:
if(speed>friction){
speed-=friction;
}else{
Speed=0;
}
应用到Ball里面则有:
vx=Math.cos(angle)*speed;
vy=Math.sin(angle)*speed;
Ball.x+=vx;
Ball.y+=vy;
三、
缓动即物体在移向某处时速度逐渐慢下来,一般的即从大速度到0,明显缓动时的速度与和目标点的经历有关系。一般的设目标点为(targetX,targetY),速度为vx和vy,物体为Ball。则缓动算法如下:
vx=(targetX-Ball.x)* parameter
vy=(targetY-Ball.y)* parameter
Ball.x+=vx;
Ball.y+=vy;
因为直接用目标点坐标减去球坐标会导致初速度过大,所以一般乘以一个小于1的参数。将以上代码加入到EnterFrame处理器里面便可实现缓动。
四、
弹性和缓动类似,弹性就是从0到大速度再由大速度到0的循环过程。参数设定和缓动一样。所以一般的弹性代码如下:
ax=(targetX-Ball.x)* parameter
ay=(targetY-Ball.y)* parameter
vx+=ax;
vy+=ay;
Ball.x+=vx;
Ball.y+=vy;
缓动时通过加速度控制速度的,在经过目标点时速度最大。球就会继续向前移动,但是超过目标点后ax、ay为负数了,vx、vy也就会减小了。直至速度为0,此时加速度为反方向最大,从而球又会向目标点移动。从而循环下去达到弹性的效果。