2012-02-29 3 views
0

나는 총알을 발사하는데 사용하는 몇 가지 공식을 가지고있다. 그러나 플레이어가 원래 위치에서 움직이고 총알이 의도 한대로 플레이어의 이전 위치에 도달하면 모두 파괴된다.발사체 다루기 Misses and trajectory

PlayerPosition == BulletPosition 인 경우, 총알이 누락 된 경우 올바른 방향으로 계속 이동하려면 어떻게해야합니까? 내 문제는 총알이 가야 할 곳에 도달하면 멈추고 움직이기위한 새로운 공식이 필요하다는 것입니다.

플레이어에 닿는 경우 쉽습니다. 항목을 제거해도 좋은 해결책을 찾을 수 없습니다. 아래는 몇 가지 코드입니다. 지금은 아주 간단합니다.

var movement = PlayerPosition - Position; 
     if (movement != Vector2.Zero) 
      movement.Normalize(); 
     //var angle = Math.Atan2(movement.Y, movement.X); 
     Position += movement*_projectileMoveSpeed; 

답변

1

플레이어와의 거리에 따라 총알의 속도가 영향을 줍니까?

나는 속도를 저장 한 다음 그 프레임을 향후 프레임에서 사용합니다. 의사 코드 :

to shoot a bullet: 
    direction is sign(PlayerPosition - Position) 
in each frame: 
    for each bullet: 
     modify position by direction * projectileMoveSpeed 
     handle collision (player or screen edge) 
+0

제 생각에 문제는 PlayerPosition이 내 인스턴스에서 증가하지 않는다고 생각합니다. 최종 수정 위치에 PlayerPosition + = My new Vector를 추가하는 것이므로 최종 위치에 도달 할 수 없으며 가장자리에서 죽을 것입니다. – firebellys