- Home /
How do I detect when an object is a certain distance from a point in order to activate an event?
I'm trying to make a character go from one point to another using a navigation script I wrote but unfortunately when I set the if statement to move onto the next point as
agent.SetDestination(Point1.position);
if(gameObject.transform.position == Point1.position)
{
posProgress++;
}
transform.LookAt(Point1);
It just gets stuck at that point and doesnt go anywhere.
Here's my full update script:
void Update ()
{
switch(posProgress)
{
case 0:
agent.SetDestination(Point1.position);
if(gameObject.transform.position == Point1.position)
{
posProgress++;
}
transform.LookAt(Point1);
break;
case 1:
agent.SetDestination(Point2.position);
if(gameObject.transform.position == Point2.position)
{
posProgress++;
}
transform.LookAt(Point2);
break;
case 2:
agent.SetDestination(Point3.position);
if(gameObject.transform.position == Point3.position)
{
posProgress++;
}
transform.LookAt(Point3);
break;
case 3:
agent.SetDestination(Point4.position);
if(gameObject.transform.position == Point4.position)
{
posProgress++;
}
transform.LookAt(Point4);
break;
case 4:
agent.SetDestination(Point5.position);
if(gameObject.transform.position == Point5.position)
{
posProgress++;
}
transform.LookAt(Point5);
break;
case 5:
agent.SetDestination(FinalDest.position);
if(gameObject.transform.position == FinalDest.position)
{
Destroy (this);
}
transform.LookAt(FinalDest);
break;
}
transform.Rotate (270, 0, 0);
}
Answer by the1337est · Aug 12, 2015 at 08:33 AM
Do you want to do something when the character gets in the proximity of Point1? You can do this:
if(Vector3.Distance(gameObject.transform.position, Point1.position) < 1.0f) //set this to whatever suits best
{
posProgress++;
}
Answer by GiyomuGames · Aug 12, 2015 at 05:32 AM
I don't know the answer to your question but 1 comment I will make is that you shouldn't check if gameObject.transform.position == PointX.position
You should do (gameObject.transform.position - PointX.position).sqrMagnitude <= 0.1f
or something small.
It's better to move to the next point when you get close enough to your point than when you are exactly at the point (which maybe never happens and is why your algorithm is stuck).
Your answer
Follow this Question
Related Questions
What is the most efficient way to create a "walkable"area for 2D games? 2 Answers
Movement and animation 1 Answer
Weird jumpy motion of character in Navigation Fundamentals proect 0 Answers
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
How the heck AI villager movement? 0 Answers