2012-12-16 31 views
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,但我使用的是pythagor公式,并且距离总是正值,所以精灵不能达到0的距离然后是自由的,我可以在这个情景中做什么?如何正确的移动速度设定为雪碧(闪存)

回答

0

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

+0

你如何计算这个速度? – Zecrow

+0

你的速度将是你每次打勾移动精灵的距离 – mitim

0

如果你有兴趣在一个更复杂的行为,其中移动物体减慢,并在目标位置停止,我建议使用转向动作:http://www.red3d.com/cwr/steer/gdc99/

在这种情况下,你看到来行为。