弓箭的运动:
dx = targetX- bowX;
dy = targetY- bowY;
angle = Math.atan2(dy,dx);
求出目标位置和弓箭绘制的弧度;
var gravity:Number = 1.45;
var vx:Number = Math.cos(angle) * power;
var vy:Number = Math.sin(angle) * power;
addEventListener(Event.ENTER_FRAME, _fly);
function _fly(e: Event): void {
vy = vy + gravity;
var degree: Number = Math.atan2(vy, vx);
rotation = degree * 180 / Math.PI;
x = x + vx;
y = y + vy;
}
然后根据弧度和power(力量或飞行速度),算出x和y方向的增量;
飞行过程中,y方向的增量(vy)加上重力系数,再根据增量求出每帧的增量弧度,再将弧度转换度数,则得到箭头飞行时角度的变化,最后x、y方向分别加上增量;