- Home /
How can I make 2 objects that are close to each other being treated as being in the same position?
Object a (0.5, 0.6, 1.9) Object b (0.4, 0.6, 1.9)transform.
I have 2 objects at the following position, and when doing if statement, I wanted these 2 to be treated as being at the same location.
if(a.transform.position == b.transform.position){}
These will definitely turn out false since they are not the same. How can I do it so that true will be return?
Unity is actually already doing something very similar to this inside the Vector3 struct where it defines what "==" between two Vector3s means, although it is to make up for inaccuracies in floating point arithmetic more than anything else:
public static bool operator == (Vector3 lhs, Vector3 rhs)
{
return Vector3.Sqr$$anonymous$$agnitude (lhs - rhs) < 9.99999944E-11f;
}
As @Berenger suggested in the comments of @$$anonymous$$ieren Wallace's answer, Sqr$$anonymous$$agnitude probably the way you want to go if it is going to be something you're testing a lot.
Answer by syclamoth · Jun 06, 2012 at 03:17 PM
Try something like this:
if(Vector3.Distance(a.transform.position, b.transform.position) < someEpsilon) {
// consider them the same location!
}
If this calculation is going to be done a lot, consider using sqr$$anonymous$$agnitude ins$$anonymous$$d.
Your answer
Follow this Question
Related Questions
activating object only on true 1 Answer
C# bool setting itself to true 1 Answer
How do I switch a bool every two seconds? 3 Answers
Set only one true 1 Answer
I can't figure out how to enable / disable a trigger. 2 Answers