2011-07-26 3 views
-2

В игре Im пытается сделать, у меня есть несколько кораблей (не космические корабли или около того, реальные корабли, они находятся в воде)Вращающийся корабль, 360 *

Если бы я только непосредственно вращать их, я получаю абсурдные результаты.

Должен ли я сделать 8 снимков для каждого корабля? (учитывая, что есть 8 направлений) Есть ли способ, которым я могу это сделать, просто создав одно изображение или, по крайней мере, несколько, а не 8?

+3

Какое ваше изображение? – SLaks

+1

Являются ли эти 2d изображения рисунками с помощью SpriteBatch.Draw или эти 3d модели? –

+1

Имея 8 разных изображений, может быть, не плохая идея, особенно если ваши ссылки ограничены только 8. –

ответ

1

По существу, математика вращения - это интерпретация исходного изображения.

Уверенный, он работает в зависимости от сложности изображения и отношения прямых и вещей, которые перпендикулярны, но некоторые вещи просто dont Работа.

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

Длинная история короткая? Математическое вращение хорошо работает для треугольного корабля стиля Астероидов, не подходит для правильной графики.

Надеюсь, это поможет!

1

Если вы говорите 2D-графику и получаете «абсурдные результаты», я предполагаю, что вы не принимаете во внимание происхождение. Если у вас есть Texture2D и дайте ему значение поворота, он будет вращаться по умолчанию, которое равно (0,0). Попробуйте установить источник в своем вызове spritebatch.Draw на новый Vector2 (texture.width/2, texture.height/2) и посмотрите, является ли это шагом в правильном направлении.

Другим подходом было бы иметь спрайт с 8 рисунками, которые вы упомянули, и ссылаться на другой исходный прямоугольник текстуры2D.

Смежные вопросы