2013-10-23 4 views
0

여기 내 코드가 있습니다. 그것은 ... 첫째 그것은 멀리가 시작된 곳에서 점프, 그리고 그것의 경련 빠르게 뒤집기의 종류를 회전하는 것 같이 내가 그것을 할 때를 제외하고, 작동XNA 피벗 점을 중심으로 여러 객체 회전하기

float rotAmount = 0; 
Vector2 pivot = CenterSelection(); 

if (keyboardState.IsKeyDown(Keys.OemPlus)) rotAmount = 0.01f; 
if (keyboardState.IsKeyDown(Keys.OemMinus)) rotAmount = -0.01f; 

map.DoForSelected(delegate(GameObject mod) 
{ 
    Vector2 vDif = pivot - mod.position; 
    float vDist = (float)Math.Sqrt(Math.Pow(vDif.X, 2) + Math.Pow(vDif.Y, 2)); 
    float vRot = rotAmount + (float)Math.Atan2(vDif.Y, vDif.X); 
    mod.position = pivot + new Vector2(
     (float)Math.Cos(vRot), 
     (float)Math.Sin(vRot) 
     ) * vDist; 
    mod.rotation += rotAmount; 
}); 

내가 뭐가 잘못 알아 내려고 노력하고 있어요! 도움을 주시면 대단히 감사하겠습니다! 잘못된 방향으로

답변

0

귀하의 차이 벡터 포인트 :

Vector2 vDif = pivot - mod.position; 

position에서 pivot에 벡터입니다.

은 그럼 당신은 newDifpivot에서 position에 벡터 것을 기대
mod.position = pivot + newDif; 

을 할당합니다. 하지만 실제로는 반대입니다.

Vector2 vDif = mod.position - pivot; 
:

그래서 당신의 차이 벡터를 반전

관련 문제