2011-08-12 3 views
0

좋아, 그래서 나는 작은 탱크 게임을 만들고있어, 나는 탱크 탄환을 만들 필요가있다. 탱크는 움직일 수 있고, 돌릴 수 있고, 탱크의 꼭대기는 마우스로 돌릴 수있다. 이제 내 문제는 총알이 총구에서 좋은 각도와 자세로 발사되는 것처럼 보이게하려면 어떻게해야할까요? 나는 당황 스럽다.이미지를 앞으로 이동하지만 회전과 동기화 하시겠습니까?

+0

XNA를 사용하고 있습니까? – RandomEngy

+0

탱크의 위치 및 탱크 밟음과 탱크 터렛의 회전을 관리하는 방법을 보여주는 코드를 게시 하시겠습니까? –

+0

그리고이 2D 또는 3D입니까? 그들이 학교에서 측정법을 가르쳐 줬을 때주의를 기울였습니까? –

답변

2

가장 쉬운 해결책은 탱크의 배럴/중앙의 시작 부분에서 총알을 시작하여 배럴과 탱크 뒤쪽에서 정렬하고 총구가 가리키는 것과 같은 방향으로 발사하는 것입니다. 특별한 회전이 필요하지 않지만 총알이 탱크 뒤에서 나타날 때까지 약간의 지연이 발생합니다.

또는 일부 수학을 수행합니다. 핫스팟을 넣거나 배럴의 시작 좌표를 기록하고 배럴을 회전 할 때이 지점을 회전시킵니다. 그러면 총알을 새로 태울 수 있습니다.

2

DirectX 및 OpenGL과 같은 3D API에는 "모델 공간"대 "세계 공간"이라는 개념이 있습니다. 여기서 Model Space는 세계에서의 위치와 World Space가 전체 세계와 관련된 좌표 집합과 관계없이 단일 모델과 관련하여 표현 된 좌표 집합입니다. 좌표가 개별 모델에 대해서만 의미가있는 모델 공간에서 좌표를 가져 와서 좌표가 전체 게임 세계에 의미가있는 월드 공간으로 변환하려면 월드 매트릭스라는 행렬을 통해 좌표를 곱합니다. 이는 세계의 모델 인스턴스마다 고유합니다. 그래서 기본적으로

:

{X는 Y가 모델 공간 좌표} * {모델 인스턴스의 세계 매트릭스} =

당신은 당신의 2D이 같은 접근 방식을 적용해야 {X는 Y는 세계 공간 좌표} 경기. 탱크 스프라이트의 배럴 끝은 항상 탱크 이미지의 X, Y 좌표와 같습니다. 그러나 탱크의 이미지가 화면에 표시 될 때 (지점을 중심으로 한 회전) 약간의 변형이 진행되고 있습니다. 기본적으로 탱크 이미지의 배럴 끝에있는 X, Y 좌표를 가져와 동일한 변형을 적용하면 배럴의 끝이 X, Y 좌표가됩니다. 현재 화면에 있습니다.

그런 다음 탱크의 회전 각을 가져서 발사체가 발사 된 후 어느 각도로 가야하는지 결정합니다.

관련 문제