2013-03-11 2 views
-1

사용자의 터치 위치를 기준으로 객체를 새 x, y 위치로 이동하려고하지만 벽돌 벽을 맞았습니다.xy를 터치 할 객체 이동

현재 축의 움직임을 수동으로 코딩하고 있지만 "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)에 있으며 속도 2(4,5)로 이동하려는 경우 예를 들어주지 : 목적지와 현재 사이의


  • 가져 오기 차이. (diff.x 및 diff.y)
diff.x = 3 
diff.y = 4 
  • 전류 목적지에서 총 거리를 가져옵니다. 거리
diff.x = 0.6 
diff.y = 0.8 
  • 곱하기 diff.x 및 diff.y 의해 의해
dist = 5 (sqrt(3^2 + 4^2) = 5) 
  • 나눈다 diff.x 및 diff.y 원하는 속도
diff.x = 1.2 
diff.y = 1.6 
sprite.x = 2.2 
sprite.y = 2.6 
+0

그게 전부 각각 스프라이트의 x와 y에 우수한 diff.x 및 diff.y을 추가, 감사합니다. 치료를 해! – 2p4s

+0

이것은 목표 위치 사이의 총 거리 대 속도가 추가 된 완벽한 의미를 갖습니다. – 2p4s