@8DSm1Le

Почему движущаяся платформа иногда застревает?

Добрый день.
Подскажите, почему движущаяся платформа иногда застревает при соприкосновении коллайдеров? Она как-будто в коллайдер блока въезжает, но такое не всегда происходит.
Может быть как-то иначе надо реализовывать?

void Update()
    {
        Move();
    }

    private void Move()
    {
        Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position + transform.up * 0.3f + transform.right * right, 0.1f, LayerMask.GetMask("Ground"));
        if (colliders.Length > 0)
        {
            dir *= -1f;
        }
        Collider2D[] colliders2 = Physics2D.OverlapCircleAll(transform.position + transform.up * 0.3f + transform.right * left, 0.1f, LayerMask.GetMask("Ground"));
        if (colliders2.Length > 0)
        {
            dir *= -1f;
        }
        transform.position = Vector3.MoveTowards(transform.position, transform.position + dir, speed * Time.deltaTime);
    }


65b7bc0066d86260337784.png
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
@8DSm1Le Автор вопроса
Нашел ответ:
все перемещения нужно делать через rigidbody velocity.
private void Move()
    {
        Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position + transform.up * 0.3f + transform.right * right, 0.1f, LayerMask.GetMask("Ground"));
        if (colliders.Length > 0)
        {
            dir = -1f;
        }
        Collider2D[] colliders2 = Physics2D.OverlapCircleAll(transform.position + transform.up * 0.3f + transform.right * left, 0.1f, LayerMask.GetMask("Ground"));
        if (colliders2.Length > 0)
        {
            dir = 1f;
        }

        rb.velocity = new Vector3(1f * speed * dir, 0, 0);
    }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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