Есть равносильное действие transform.forward только для физического движения?
Transform.forward это по факту телепортация объекта вперед по оси Z, из-за телепортации гравитация перестает работать должным образом. Нужна равносильная замена, только физическая.
using UnityEngine; [RequireComponent(typeof(Rigidbody))] [RequireComponent(typeof(CapsuleCollider))] public class mainCharacterMovement : MonoBehaviour < private Vector3 moveVector; public float speedCharacter = 5f; public float ternVelocity = 3f; private Rigidbody _rbMainCharacter; void Start() < _rbMainCharacter = GetComponent(); > private void FixedUpdate() < MoveLogic(); >private void MoveLogic() < moveVector.x = Input.GetAxis("Horizontal") * ternVelocity; moveVector.z = Input.GetAxis("Vertical") * speedCharacter; _rbMainCharacter.velocity = transform.forward * moveVector.z; //проблема _rbMainCharacter.AddTorque(transform.up * moveVector.x); >>
Отслеживать
задан 19 мая 2022 в 16:17
53 7 7 бронзовых знаков
Это не телепортация, а нормализованный вектор направления, и ты его можешь использовать где захочешь, даже в физике. Самое смешное, что нты используешь точно такой же вектор transform.up только другое направление. а вообще для передвижения персонажа считается плохой практикой использовать Rigidbody и CapsuleCollider, пользуйся лучше CharacterController. Вот ссылочка, для ознакомления docs.unity3d.com/ScriptReference/CharacterController.Move.html
23 мая 2022 в 0:41
Спасибо, я только изучаю Unity, и хотел бы сделать все правильно. Т.е как делают в компаниях. Рассмотрю документацию.
Vector3.forward
Благодарим вас за то, что вы помогаете нам улучшить качество документации по Unity. Однако, мы не можем принять любой перевод. Мы проверяем каждый предложенный вами вариант перевода и принимаем его только если он соответствует оригиналу.
Ошибка внесения изменений
По определённым причинам предложенный вами перевод не может быть принят. Пожалуйста попробуйте снова через пару минут. И выражаем вам свою благодарность за то, что вы уделяете время, чтобы улучшить документацию по Unity.
Vector3.forward
Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.
Submission failed
For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.
Your name Your email Suggestion * Submit suggestion
Transform.forward
Возвращает нормализованный вектор, представляющий синюю ось преобразования в мировом пространстве.
В приведенном ниже примере показано, как управлять положением GameObject по оси Z (синяя ось) преобразования в мировом пространстве. В отличие от Vector3.forward, Transform.forward перемещает GameObject с учетом его поворота.
Когда игровой объект вращается, синяя стрелка, обозначающая ось Z игрового объекта, также меняет направление. Transform.forward перемещает GameObject по оси синей стрелки (Z).
Информацию о перемещении GameObject по оси Z без учета поворота см. в разделе Vector3.forward.