Я делаю простую игру в C#/XNA. Мои актеры хранят направление, в котором они собираются пойти как Vector2
. В каждом цикле обновления я нормализую заголовок (из-за того, что он установлен, может привести к разной длине) и добавьте heading*Speed
в положение для перемещения актера.Использование нормализованных векторов для хранения заголовка
Это кажется неэлегантным. Логически, направление не имеет длины, оно по определению является единичной длиной. Практически постоянная нормализация имеет тривиальные посторонние вычислительные затраты.
- Есть ли
NormalizedVector2
в XNA? - Как я могу создать тот, который совместим с XNA
Vector2
(т. Е. Может быть добавлен к нему и т. Д.)? РасширитьVector2
и переопределить свойствоLength
? - Существуют ли более серьезные концептуальные проблемы с тем, как я пытаюсь выполнить то, что я пытаюсь выполнить?
Хотя можно подумать, что направление само по себе не имеет величины, вектор скорости делает. Вектор скорости содержит как скорость, так и направление, и удобно представлять оба этих данных в одной векторной структуре. Очень простой способ объединить заголовок и скорость - начать с заголовка длины единицы, как и вы. Использование этого вектора скорости, который эффективно содержит два бита данных, является изящной вещью. –