Я пытаюсь создать движение в воздухе для 3D-платформера, и я пытаюсь использовать transform.forward и transform.right в качестве поплавков. Однако я не могу понять, как изменить их на значения с плавающей запятой, поскольку они являются переменными Vector3. Вот что я пробовал:
velX = transform.forward * Input.GetAxis("Horizontal");
velZ = transform.right * Input.GetAxis("Vertical");
То, что я получил, было ошибкой, говорящей, что transform.forward и transform.right являются значениями Vector3, тогда как velX и velZ являются числами с плавающей запятой.





Не совсем уверен, чего вы пытаетесь достичь, но если вы ищете скалярное представление вектора, то есть фактическую длину вектора, то Vector3.magnitude его получит. Он вернет расстояние между заданным началом вектора и его конечной точкой.
Вы получаете векторную величину, вызывая:
Vector3.magnitude(point.forward)
И я почти уверен, что вы даже можете сделать:
point.forward.magnitude
Вы можете перейти к здесь и здесь для дальнейшего ознакомления.
Опять же, я не уверен, что это то, что вы пытаетесь получить, но я надеюсь, что это поможет.
и для чего вы собираетесь использовать moveDirection?
Догадаться:
velX = (transform.forward.x + transform.right.x) * Input.GetAxis("Horizontal");
velZ = (transform.forward.z + transform.right.z) * Input.GetAxis("Vertical");
Я не уверен, чего вы пытаетесь достичь здесь. Поле .forward и .right возвращает вам Vector3. Поля x, y и z имеют тип float, и вы уже получили значения в форме float.