Почему коллайдер Character Controller ведет себя так странно и можно ли это исправить

Рейтинг: 0Ответов: 1Опубликовано: 22.06.2023

скорее всего в том что это неправильно работает виноват я, но все же хочу разобраться в том, где я допустил ошибку?

Проблема в том что коллайдер CC в юнити ведет себя странно, то есть почему то когда его Height равен 1.7 то игрок не проходит сквозь пол и коллайдер не совпадает с капсулой:

Зеленым границы коллайдера, а красным ошибки и примечания Зеленым границы коллайдера, а красным ошибки и примечания

А если Height = 2, то игрок левитирует над землей, но при этом коллайдер совпадает с размерами капсулы:

введите сюда описание изображения

Вот скрипт, может он как то влияет :/

{
    [SerializeField] private float Speed;
    [SerializeField] private float JumpForce;

    [SerializeField] private float gravity;
    [SerializeField] private Vector3 moveVector;

    [SerializeField] private CharacterController _CC;

    private void Update()
    {
        CharacterMove();
        GamingGravity();
    }

    private void CharacterMove()
    {
        moveVector = Vector3.zero;
        moveVector.x = Input.GetAxis("Horizontal") * Speed;

        if(Vector3.Angle(Vector3.forward, moveVector) > 1f || Vector3.Angle(Vector3.forward, moveVector) == 0)
        {
            Vector3 direct = Vector3.RotateTowards(transform.forward, moveVector, Speed, 0.0f);
            transform.rotation = Quaternion.LookRotation(direct);
        }

        moveVector.y = gravity;

        _CC.Move(moveVector * Time.deltaTime);
    }

    private void GamingGravity()
    {
        if (!_CC.isGrounded) gravity -= 20f * Time.deltaTime;
        else gravity = -1f;
        if (Input.GetKeyDown(KeyCode.Space) && _CC.isGrounded) gravity = JumpForce;
    }
}

Я конечно могу просто забить на это, но боюсь что когда я добавлю в игру модель лисы то я капец запарюсь с поиском точного размера, а во вторых возможно в будущем это приведет к каким-либо ошибкам и костыля, а я не хочу чтобы так случилось

Ответы

▲ 0

Я решил изучить компонент Character Controller с ног до головы, и понял, что проблема была в пункте Skin Width, его надо было поставить на минимум. Если я правильно понял, он отвечает, за так скажем виртуальный коллайдер, который в свою очередь и выталкивал игрока от пола и других коллайдеров. Вот такие вот дела!