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

Не работает часть кода в Unity

Георгий Манн Ученик (136), на голосовании 1 год назад
Пытаюсь сделать гравитацию игроку, но почему то не работает проверка нахождения на земле. При чём не понимаю почему, всё вроде правильно написал
Вот код: https://github.com/GarelkaILCPP/code/blob/main/code
Голосование за лучший ответ
Кукиш ос Ученик (181) 1 год назад
Изучаю его, но не полностью, так что не могу помочь
Наурызбай Асенов Мастер (1225) 1 год назад
Похоже, у вас возникла проблема с проверкой гравитации. Убедитесь, что контроллер вашего персонажа настроен правильно, а на объектах, с которыми взаимодействует персонаж, имеются коллайдеры. Кроме того, рассмотрите возможность использования else вместо проверки if и else if для клавиши LeftShift.

Вот модифицированная версия вашего кода с некоторыми изменениями:

private void Gravity() {
if (!_cc.isGrounded) {
_cc.Move(Vector3.down * Time.deltaTime * _gravityForce);
}
}

private void Move() {
// Run
if (Input.GetKey(KeyCode.LeftShift)) {
_tmpSpeed = _runSpeed;
}
else {
_tmpSpeed = _walkSpeed;
}

// Movement
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");

Vector3 moveDirection = new Vector3(h, 0, v);
_cc.Move(moveDirection * Time.deltaTime * _tmpSpeed);
}

private void Update() {
Move();
Gravity();
}

Эти изменения должны помочь решить проблему гравитации. Убедитесь, что у вашего персонажа есть коллайдер, а также у земли тоже есть коллайдер, чтобы проверка isGrounded работала точно.
Похожие вопросы