Если вы нормализуете вектор, убедитесь, что его длина равна 1 . Это отличный способ избежать излишеств, таких как «диагональное движение быстрее, чем нормальное движение».
Однако тот факт, что длина всегда равна 1, также означает, что нет «медленного движения» или «движения на полной скорости». Скорость "отличие от джойстика. Когда вы говорите: «Я потерял значения джойстика между 1 и 0», это связано с этим фактом.
Один из способов обойти это разработчики - использовать математическую формулу для масштабирования скорости.
Вы Могут:
- Использовать наибольшее значение (горизонтальное или вертикальное) для управления скоростью
- Использовать наименьшее значение
- Использовать комбинацию из двух
Еще один способ сделать это - сохранить длительность go движения, а затем масштабировать скорость на основе этого. У этого метода есть свои проблемы, но он хорошо знаком игрокам.
Примеры
Например, если у меня есть:
horizontalInput = 1
verticalInput = 0.5
Это означает, что мой нормализованный вектор выглядит следующим образом:
Я мог бы:
Используйте наибольшее значение
Двигайтесь на полной скорости (1) в направлении моего вектора.
Используйте наименьшее значение
Двигайтесь на половинной скорости (0,5) по направлению моего вектора.
Использовать a Использовать комбинацию двух значений
Для этого примера, давайте использовать следующую формулу: (x+y)/2
. Двигайтесь со скоростью 3/4 (0,75) в направлении моего вектора.
ПРИМЕЧАНИЕ: Эта формула не будет "чувствовать себя так хорошо", если у вас есть x=0
и y=1
, это всего лишь пример. Скорее всего, вы хотите использовать Мин. , Макс. , Ср. и операторы if для управления скоростью.
Вы можете использовать разные формулы и различные приемы, чтобы сделать движение в вашей игре таким, каким вы хотите, но найдите время, чтобы проанализировать, ПОЧЕМУ это так.