2013-03-11 74 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