2013-03-11 79 views
-1

我试图根据用户的触摸位置将对象移动到新的x,y位置,但是我碰到了一堵砖墙。移动物体触摸x y

目前,我正在手动编码轴的运动,但它会生成脚本,“x然后y”,从而导致平移运动。理想情况下,我想获得触摸位置的线性路径,而不是方形。

我的基本动作计算是在这里:

//check target not met on x axis 
     if(spriteX != spriteTargetX){ 
      //check if its left or right 
      if(spriteTargetX<spriteX){ 
       spriteX -=spriteSpeed; 

      }else{ 

       spriteX +=spriteSpeed; 
      }        
     } 
     if(spriteY != spriteTargetY){ 
      //check if its up or down 
      if(spriteTargetY<spriteY){ 
       spriteY -=spriteSpeed; 
      }else{ 
       spriteY +=spriteSpeed; 
      }           
     } 

上述算法总是导致一个正方形运动。我真的不知道我是否应该进行某种距离/角度计算。有任何想法吗?

回答

0

这样做的一个简单方法是将运动方向表示为单位矢量,并乘以速度。我将列出的基本步骤,以及举个例子,你是在(1,1)并希望移动到(4,5)与速度2:目的地和电流之间


  • 获取差异。 (diff.x和diff.y)
diff.x = 3 
diff.y = 4 
  • 获得从目的地到当前的总距离。
dist = 5 (sqrt(3^2 + 4^2) = 5) 
  • 鸿沟diff.x和diff.y由距离
diff.x = 0.6 
diff.y = 0.8 
  • 乘法diff.x和diff.y由所需的速度
diff.x = 1.2 
diff.y = 1.6 
  • 添加diff.x和diff.y到精灵的X和Y,分别为
sprite.x = 2.2 
sprite.y = 2.6 
+0

那好,谢谢你。作品一种享受! – 2p4s 2013-03-15 10:02:21

+0

现在增加了速度与目标位置之间的总距离,这是非常有意义的。 – 2p4s 2013-03-15 10:29:39