KraGenDeveloper
@KraGenDeveloper
Unity Developer

Движение персонажа по вектору взгляда камеры?

Здравствуйте, делаю игру 3Д где персонажем является Шарик (сфера). Который я двигаю с помощью Rigidbody.addForce
Управление производится через джойстик UI, в коде получается:
rb.addForce(joystick.Horizontal * speed, 0f,joystick.Vertical * speed)
Сразу говорю, сделав пустой объект перед игроком и зафиксировав его что бы он всегда был паралельно камере не вариант ибо делал но все равно: Я тяну джойстик вперёд а сфера котится по общей оси Z (вперёд). Как сделать движение персонажа по вектору взгляда камеры?
  • Вопрос задан
  • 1711 просмотров
Решения вопроса 1
@respozu
Привет! Если я все правильно понял, то:

public GameObject camera;

rb.AddForce(camera.transform.forward * joystick.Vertical * speed, 0f, camera.transform.right * joystick.Horizontal * speed);

Кстати, похоже что ты перепутал оси джойстика у себя в коде, советую их поменять (ты в "x" передаешь ось "Horizontal", что неверно с точки зрения вектора), иначе потом могут возникнуть недопонимания всей этой системы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
NikS42
@NikS42
Unity developer
Лучше сразу учиться нормально, это общий принцип, с которым нужно подходить к любому вопросу. Иначе каждый день будет "забудьте всё, чему вас учили до этого"

Примерно никогда не понадобится двигать персонажа по направлении камеры, это самообман, чтобы не напрягаться. Даже с шариком этот фокус не прокатит, потому что заказчик/дизайнер/игроки/здравый смысл рано или поздно попросит добавить шарику глаза, чтобы было понятно, что это персонаж. Мы берем вектор направления камеры, проецируем его на плоскость, в которой персонаж ходит, как правило, у шариков это xz. И после этого нужно поворачивать ШАРИК в сторону получившегося вектора, а ходить он будет уже правильно повернутый через например rb.AddForce(rb.transform.forward*......)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы