@Axel-ag

Как убрать трение в Unity2D?

Чтобы убрать трение при столкновении со стенами я добавлял колайдеру персонажа физический материал и в нём убирал Friction на 0, но из-за отсутсвия трение персонаж начинал скользить по поверхности земли после остановки движения. А если Friction на 1, то сколькожение пропадало, но персанаж растревает при контакте со стенами. Читал на форумах, что скольжение происходит из-за перемещения персонажа через Transform и нужно делать через velocity, но почему-то у меня это не сработало.

Условие для движения персонажа
if (_joystick.Horizontal != 0 && !_isAttacking && _health > 0)
        {
            _rigidbody.velocity = new Vector2(_joystick.Horizontal * _speed, _rigidbody.velocity.y);
            _effect.SetActive(true);
            _animator.SetInteger("StateSwordsman", 2);
        }
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 1
DanceM
@DanceM Куратор тега Unity Game Engine
Кто хочет -ищет способ, кто не хочет -ищет причину
Так а при чем вообще трение к стенам? В них ведь только упирается персонаж, не скользит ведь.

Да, все верно, просто двигать transform в комбинации с физикой нельзя, будет "застревать".
Используйте что-то вроде Rigidbody.AddForce() или Rigidbody.MovePosition() в зависимости от схемы управления, чтобы персонажа двигала тоже физика, а не "телепортировался" внутрь стен каждый кадр.
Ну и через velocity можно, но по вашему фрагменту не ясно, что там не так. Выводите входящие значения переменных в логи и смотрите, что работает а что нет.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы