Сделал скорее для себя, ибо на хабре вряд ли кто-то станет писать код для кого-то.
Вы не упомянали в каком измерении это писать, т.ч. запилил на 2д. Код рабочий, я проверял. Spherecast (Это для 3д), CircleCast (Для 2д) для обеих случаев подойдёт.
public class Logic : MonoBehaviour
{
public float Speed;
[Header("SphereCast options")]
public float Radius;
private void Start()
{
_originalSpeed = Speed;
}
private void OnMouseDown()
{
Detector();
Movement();
}
private void OnMouseUp()
{
Speed = 0;
}
private void Movement()
{
transform.Translate(Speed * Time.deltaTime, Speed * Time.deltaTime, 0);
}
float _originalSpeed;
private void Detector()
{
if (Physics2D.CircleCast(transform.position, Radius, transform.right))
{
Speed = 0;
}
else
{
Speed = _originalSpeed;
}
}
}