Hello,
I am having a problem with positioning objects when I move them sometimes point that the user chooses has other object nearby so what I decrease the direction between the point I wanted to put the object and the object that was already there. But now when i have multiple of them it doesn’t work well and I don’t know what math could I use to figure out the closest point to the click in this case.
Examples of the current behaviour
code:
idealPosition -= directions[0] / 2;
I already tried to to a loop and apply multiple directions but the object is placed far away and I want the closest position.
If all of the objects are circles anchored at the center, and you don’t care about rotation at the end, and you have a reference to the object you want to avoid overlapping, you could use the following:
Transform.LookAt([other object]);
Transform.Rotate(0,0,180);
//point yourself so that when you move forward, you move away from the center of the other object.
Collider2D[] results=new Collider2D[1];
ContactFilter2D contactFilter = new contactFilter2D();
contactFilter=contactFilter.NoFilter();
//Create a bunch of data fields because the person who wrote the OverlapCollider method was probably not in their right mind.
while(GetComponent<Collider2D>().OverlapCollider(contactFilter,results)!=0)
//while you're still touching another circle.
transform.translate(.1f,0,0);