- Home /
Allow to move object by the mouse position without missing any collisions
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.
Answer by ExtraFlash · Aug 02, 2017 at 12:03 AM
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);
}
Your answer
Follow this Question
Related Questions
How to calculate direction between 2 objects 2 Answers
[2D] Object at X distance to Y direction from point 1 Answer
Raycast Hit Question 1 Answer
Lerp in direction to certain distance 3 Answers
Top-Down Enemy Ai Animation 0 Answers