vkvk
@vkvk

Почему объект иногда не отталкивается от стенок?

Объект должен при столкновении с другим объектом оттолкнуться, но иногда он почему-то этого не делает и я не понимаю почему. Код:
private void Update()
    {
        lastVelocity = rb.velocity;
    }

    private void OnCollisionEnter2D(Collision2D collision)
    {
        var direction = Vector3.Reflect(lastVelocity.normalized, collision.GetContact(0).normal);
        rb.velocity = direction * normalSpeed;

        if (collision.gameObject.layer != gameObject.layer)
        {
            collision.gameObject.GetComponent<Cell>().PaintCell(teamNum, teams[teamNum]);
        }
    }

при абсолютно любом значении normalSpeed он может либо остановится после столкновения, либо оттолкнуться. Сам игрок (объект, что сталкивается) имеет свой слой и коллизия включена только для объектов, имеющих отличный слой. Игрок появляется в клетках с таким же слоем, какой у него, поэтому я не думаю, что он застревает. Единственное, когда игрок сталкивается с клетками имеющими слой отличный от его, он меняет им слой, на свой (захват территории). Но в коде этот процесс происходит после отталкивания (то есть по порядку игрок должен сначала оттолкнуться, а уже потом все остальное). Что может быть не так?
  • Вопрос задан
  • 58 просмотров
Пригласить эксперта
Ответы на вопрос 1
@crokocat
Физический объект сам должен отталкиваться, ему не нужно вручную пересчитывать направление при столкновении (либо не надо применять RigidBody).
В данном случае изменение velocity после столкновения и ведет к тому, что он неверно отталкивается.
Ответ написан
Ваш ответ на вопрос

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

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