Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Unity Character controller

Щебень Ученик (132), открыт 1 неделю назад
Когда хожу по поверхности персонаж через время улетает за карту, что может быть не так?
Видео

 { 
[RequireComponent(typeof(CharacterController))]
public class PlayerMovement : MonoBehaviour
{
[SerializeField] private float _walkSpeed = 5;
[SerializeField] private float _runSpeed = 8;
[SerializeField] private float _rotateSpeed = 75;
[SerializeField] private float _jumpForce = 5;
[SerializeField] private float _gravity = -9.81f;

private CharacterController _characterController;
private Collider _playerCollider;
private Camera _playerCamera;

private Vector3 _velocity;
private Vector2 _rotation;
private Vector2 _direction;

private Joint _joint;
private Rigidbody _currentRigidbodyObject;
private Collider _currentColliderObject;

private void Start()
{
_characterController = GetComponent();
_playerCollider = GetComponent();
_playerCamera = GetComponentInChildren();
_joint = GetComponentInChildren();

Cursor.lockState = CursorLockMode.Locked;
}

private void Update()
{
_characterController.Move(_velocity * Time.deltaTime);

_direction = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
Vector2 mouseDelta = new Vector2(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y"));

if (_characterController.isGrounded) _velocity.y = Input.GetKeyDown(KeyCode.Space) ? _jumpForce : -0.1f;
else _velocity.y += _gravity * Time.deltaTime;


mouseDelta *= _rotateSpeed * Time.deltaTime;
_rotation.y += mouseDelta.x;
_rotation.x = Mathf.Clamp(_rotation.x - mouseDelta.y, -90, 90);
_playerCamera.transform.localEulerAngles = _rotation;
}

private void FixedUpdate()
{
_direction *= Input.GetKey(KeyCode.LeftShift) ? _runSpeed : _walkSpeed;
Vector3 move = Quaternion.Euler(0, _playerCamera.transform.eulerAngles.y, 0) * new Vector3(_direction.x, 0, _direction.y);
_velocity = new Vector3(move.x, _velocity.y, move.z);
}
}
}
2 ответа
Улик Додиков Оракул (90554) 1 неделю назад
Проблема может быть связана с неправильным расчетом или применением силы гравитации, из-за чего персонаж «вылетает» за пределы карты. Попробуйте проверить и корректно рассчитывать гравитацию и движение, особенно в `Update()` и `FixedUpdate()`, чтобы убедиться, что персонаж правильно остается на земле.
Лёва ПотаповУченик (100) 1 неделю назад
⚡️АКТУАЛЬНЫЕ ССЫЛКИ⚡️

ТОТ САМЫЙ КРАКЕН,СПРУТ,МЕГА,ОМГ
— Топовые дарк форумы
— Схемы заработка
— Сливы девочек
И многое другое!

DARKLINK . AT

УБЕРИ ПРОБЕЛ В ССЫЛКЕ!!
Сергей Гений (56701) 1 неделю назад
Что-то я не наблюдаю создания первоначального _velocity
Update() только ссылается на него
В FixedUpdate есть создание, new Vector3 но одним из параметров требует сам себя же.
Похожие вопросы