Переместить изображение вперед, но синхронизировать его с вращением? - PullRequest
0 голосов
/ 13 августа 2011

Хорошо, я делаю небольшую игру с танком, и мне нужно, чтобы мой танк стрелял пулями, танк может двигаться, поворачиваться, верх танка поворачивается самостоятельно, с помощью мыши. Теперь моя проблема в том, как мне сделать так, чтобы пуля выглядела как пуля из ствола, с хорошим углом и положением? Я немного озадачен.

Ответы [ 2 ]

2 голосов
/ 13 августа 2011

3D API, такие как DirectX и OpenGL, имеют концепцию под названием «Пространство модели» и «Мировое пространство»;где Пространство модели - это набор координат, выраженный по отношению к одной модели, независимо от того, где она находится в мире, а Пространство мира - это набор координат, которые относятся ко всему самому миру.Чтобы взять координату из модельного пространства, где координаты имеют значение только для отдельной модели, и преобразовать ее в мировое пространство, где координаты имеют значение для всего игрового мира, вы умножаете координаты через матрицу, называемую матрицей мира,который уникален для каждого экземпляра модели в мире.

Так что в основном:

{X, Y координаты в пространстве модели} * {World Matrix экземпляра модели} = {X, Y координатыв мировом пространстве}

Вы должны применить этот же подход к вашей 2D-игре.Конец ствола на вашем спрайте танка всегда совпадает с координатой X, Y изображения вашего танка.Но изображение вашего танка претерпевает некоторые преобразования, когда оно отображается на экране (вращение вокруг точки).Вам просто нужно взять координаты X, Y конца ствола на изображении резервуара и применить к нему то же самое преобразование, и это даст вам координаты X, Y того места, где конецствола в данный момент находится на экране.

Затем оттуда возьмите угол поворота танка, чтобы определить, какой угол должен пройти снаряд после его выстрела.

2 голосов
/ 13 августа 2011

Самое простое решение - запустить пули с начала ствола / центра вашего резервуара, отсортировать их за стволом и резервуаром и стрелять в том же направлении, куда направлен ваш ствол.Не требует особого вращения, но вызывает небольшую задержку, пока пуля не появляется из-за танка.

Или, вы немного по математике.Поставьте точку доступа или запишите координаты начала ствола, и когда вы вращаете ствол, вращайте эту точку вместе с ним.Тогда это будет новая точка для появления ваших пуль.

...