箭的轨迹

时间:2011-12-31 15:25:02

标签: actionscript-3 flash-cs5

我正在模拟飞行箭头,但它看起来并不自然。

这是一个截图:

enter image description here

箭头动画片段的锚点就像你可以看到的那样位于箭头的前面,但是如果我把它替换到中间,它仍然看起来并不完美,有没有人有这样的经历?

这里也是我的代码:

//...
//'math' isn't the default 'Math' class, it calculates some physics stuff.

private function updateArrow()
        {
            var y0:Number = 50;
            var v:Number = 100;
            var angle:Number = math.getRadians(45);

            if(!arrowstartposition)
            {
                arrowstartposition = activearrow.x;
                arrowdistance = math.calcDistance(y0,v,angle);
            }

            var currentdistance:Number = Math.abs(activearrow.x - arrowstart);

            if(currentdistance <= arrowdistance)
            {
                var currentvelocity:Number = math.calcVelocity(currentdistance, v, angle);
                var addvalue:int = 1; //Math.round(currentvelocity / 4);

                activearrow.x += addvalue;
                currentdistance += addvalue;

                var arrowheight:Number = math.calcHeight(currentdistance,y0,v,angle);
                var vx:Number = v * Math.cos(angle);
                var vy:Number = - (v * Math.sin(angle) - 9.81 * (currentdistance / arrowdistance) * math.calcTimeOfFlight(y0, v, angle));
                var currentangle:Number = Math.atan2(vy,vx);

                activearrow.y = y0 - arrowheight;
                activearrow.rotation = math.getDegrees(currentangle);
            }
            else
            {
                arrowstart = undefined;
                arrowdistance = undefined;
                activearrow = null;
            }
        }

1 个答案:

答案 0 :(得分:2)

我认为你的重心已关闭。箭头不会是箭头的重力中心。否则它不会飞得很好。箭头的重心将与飞行的抛物线相切。因此它将围绕该重心旋转。尝试将它更多地移向箭头的中心,它将开始看起来更自然。如果你还有问题。尝试扔一块石头,让它看起来很自然。然后在箭头中添加回来。如果它看起来像石头一样好,那么看起来很糟糕,你知道动作是正确的,但是箭头已经关闭了。