vkvk
@vkvk

Как сделать бесконечно отталкивание от стен с помощью Rigidbody 2d?

Всем привет, делаю механику, при которой кружок бесконечно должен отталкиваться от стенок, при этом его скорость может меняться прямо во время движения. Сейчас реализовано так:

private void Start()
    {
        rb = GetComponent<Rigidbody2D>();

        direction = Random.insideUnitCircle;

        rb.AddForce(direction * normalSpeed, ForceMode2D.Impulse);
    }

    void Update()
    {
        rb.AddForce(normalSpeed * rb.velocity, ForceMode2D.Impulse);
        rb.velocity = Vector3.ClampMagnitude(rb.velocity.normalized, normalSpeed * normalSpeed);
    }


Но работает не так, как надо, а именно круг движется в следующем направлении (причем всегда, если столкнулся со стеной - движется также, но в обратном направлении):
63b83bc1cc4ca345321464.png

Понимаю, что это скорее всего из-за включенной гравитации, но круг должен также отталкиваться от стен. На стенах весит физический материал с параметром bounciness равным 1. На кружочке следующие параметры для Rigidbody2D:
63b83d901c28d019175918.png

Как можно было бы решить эту проблему и сделать бесконечное движение с отталкиванием от стен с помощью Rigidbody2D правильно?
  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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