1
            if(sprite.status == 'moveBack')
            {
                var pointX:Number = mouseX + Math.cos(sprite.angle) * 100;
                var pointY:Number = mouseY + Math.sin(sprite.angle) * 100;
                dx = pointX - sprite.x
                dy = pointY - sprite.y;
                var angle:Number = Math.atan2(dy, dx);
                var dist:Number = Math.sqrt(dx * dx + dy * dy);
                if(dist < 1)
                {
                    sprite.status = 'free';
                }
                else
                {
                    sprite.x += Math.cos(angle) * 15;
                    sprite.y += Math.sin(angle) * 15;
                }
                trace(dist);
            }
sprite.angle += 0.05;

这是一小段代码,所以这里的一个精灵对象正在回到它们之前的位置,指向他来的地方,每次都在移动,问题是:假设我的速度是 15 像素/每帧,我的电影剪辑接近他即将到来的终点,剩余距离为 20,那么如果我的速度为 15,则 20 -15 = 5,然后 5 - 15 = -5,但我使用的是毕达哥公式并且距离总是正的,所以精灵不能达到0距离然后自由,在这种情况下我能做什么?

4

2 回答 2

0

如果您对移动物体减速并停在目标位置的更复杂的行为感兴趣,我建议使用转向行为:http ://www.red3d.com/cwr/steer/gdc99/

在这种情况下,您正在查看到达行为。

于 2012-12-18T16:58:24.947 回答
0

在这种情况下,我倾向于为自己做的只是检查剩余距离是否等于或小于每一步的速度。然后如果是,只需将速度设置为剩余距离。

于 2012-12-16T09:49:07.713 回答