I move my object by mouse position and the problem is that if i move my mouse too fast, the object will follow it and miss collisions with other objects.
My solution is to set a max distance and check if the distance between the last position and the current position is greater than max, the distance between them will be equal to max , so the object wont be able to move too fast but will still follow the mouse position.
For example: the last position is (1,2) and the current position is (8,5), max distance is 1, i need to get the distance and check if its greater than 1, if it is, the current position will be changed so the distance between the 2 points will be 1 (only the current position will be changed).
The only problem is that I dont know how to do that and I need help.
Eventually I solved it by using Vector2.MoveTowards()
Here is the script:
public GameObject theObject;
float limitedDistance=1;
Vector2 currentPosition;
void Update()
{
currentPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); //this is the mouse position
float dis = Vector2.Distance(theObject.transform.position,
currentPosition); //this is the distance between the mouse position and the gameobject
if(dis>limitedDistance)
dis=limitedDistance; // if the distance is greater than the max distance, the distance will be equal to the max distance
theObject.transfrom.position=Vector2.MoveTowards(theObject.transfrom.position, currentPosition, dis);
}