Всем привет, делаю механику, при которой кружок бесконечно должен отталкиваться от стенок, при этом его скорость может меняться прямо во время движения. Сейчас реализовано так:
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);
}
Но работает не так, как надо, а именно круг движется в следующем направлении (причем всегда, если столкнулся со стеной - движется также, но в обратном направлении):
Понимаю, что это скорее всего из-за включенной гравитации, но круг должен также отталкиваться от стен. На стенах весит физический материал с параметром bounciness равным 1. На кружочке следующие параметры для Rigidbody2D:
Как можно было бы решить эту проблему и сделать бесконечное движение с отталкиванием от стен с помощью Rigidbody2D правильно?