Unity. Как отменить путь движения персонажа, если он сталкивается со стенами, платформами и т.д

Начал делать свою первую игру на Unity в 2D стиле. Столкнулся с проблемой того, что персонаж просто пролетает сквозь платформы и стены, а хотелось бы чтобы при соприкосновении персонаж просто ударялся и падал, либо же оставался на платформах. Основное управление через клик мыши. Посмотрел различный материал на данную тему, но не нашёл подходящего для себя.

[SerializeField] private float speed;
private Vector2 lastClickedPos;
bool moving;
private Rigidbody2D rb;

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

private void Update()
{

if (Input.GetMouseButtonDown(0))
{
    lastClickedPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
    moving = true;
}

if (moving && (Vector2)transform.position != lastClickedPos)
{
    float _step = speed * Time.deltaTime;
    transform.position = Vector2.MoveTowards(transform.position, lastClickedPos, _step);
    FlyMoment();
    

}
else
{
    moving = false;
}
}

private void FlyMoment()
{
    if(moving == true)
    {
        rb.Sleep();
    }
    else
    {
        rb.WakeUp();
    }       
} 

Ответы (0 шт):