2012-11-15 3 views
0

XNA에서 비행 시뮬레이터 게임을 만들고 있습니다. 나는 또한지도 주위를 움직이는 몇 개의 비행선 (비행선)을 가지고있다. 문제는 그들이 블라인드가지도의 끝까지 올 때 제대로 돌아갈 수 없다는 것입니다. Blimp 클래스에 회전 위치와 회전 변수 및 속도가 포함되어 있습니다. 이것은 기본 논리로, 가장자리 근처에있을 때 회전을 시작할 것이라고 말합니다. 그러나 특정 양을 돌린 후 회전을 멈추게 만드는 방법을 모르겠습니다 (180도를 말하십시오).xna의 회전 문제

private void blimpLogic(GameTime gameTime) 
{ 
    float turningSpeed = (float)gameTime.ElapsedGameTime.TotalMilliseconds/ 1000.0f; 
    float turning = 0; 
    foreach (Blimp b in blimps) 
    { 
     if (b.Pos.X <= terrain.EdgeX.X + 100) 
     { 
      turning += turningSpeed * b.Speed; 
      b.Rotation += turningSpeed; 
     } 
     if (b.Pos.X >= terrain.EdgeX.Y - 100) 
     { 
      turning += turningSpeed * b.Speed; 
      b.Rotation += turningSpeed; 
     } 
     if (b.Pos.Z <= terrain.EdgeZ.X + 100) 
     { 
      turning += turningSpeed * b.Speed; 
      b.Rotation += turningSpeed; 
     } 
     if (b.Pos.Z >= terrain.EdgeZ.Y - 100) 
     { 
      turning += turningSpeed * b.Speed; 
      b.Rotation += turningSpeed; 
     } 
    } 
} 

미리 감사 드리며 내가 뭔가 명확하지 않은지 묻습니다.

답변

0

blimps가 가장자리에서 멀어지면 "정지 선회"작업이 수행되므로 모든 플레이어가 가까이 가고 싶어 할 수 있으므로 Blimp의 위치를 ​​정할 수 없습니다.

각 비행선에 추가 상태를 포함해야하며 turningFromTheEdge이 설정되어 있고 더 이상 비행선이 가장자리 근처에 있지 않으면 선회를 중지하십시오.

+0

고마워, 내가 오래 길을 위해 붙어 있었지만 .. 좋은 해결책을 찾았는데, 여기서 내가 회전을 확인하는 currentRotation을 가지고있어서 180도 이상 회전하지 않을 것이다. :) – kakebake