I’m having difficulty in doing a particular bit of logic. I want any number of AI to make decisions based on their proximity to a particular object.
If they are within a certain limit, they will act a certain way, and if they are within an even smaller limit, they will react yet another way.
The issue is, I’m not exactly sure how to do this.
I’ve created a script that allows us to choose what kind of perimeter around the object we want (it varies between levels).
As a simple attempt, I’ve filled out script which creates a box around a central point.
To test AI interaction, I placed several object transforms in an array and tried to get the script to detect those objects.
However, the script never detects them.
I suspect there’s something wrong in my logic but I could really use help as far as the organization of this code in general also. If anyone has a better solution for my problem then what I’ve come up with, I’m all ears.
Specifically though I want to know WHY these objects aren’t being detected by my proximity script.
I’ve taken out the defining of the box’s vectors in this code snippet.
private void RectangleLogic()
{
for (int i = 0; i < interactingAgent.Length; i++)
{
if (interactingAgent[i])
{
if (
interactingAgent[i].transform.position.x > patrolBottomLeftFront.x &&
interactingAgent[i].transform.position.x < patrolBottomRightFront.x &&
interactingAgent[i].transform.position.z > patrolBottomLeftFront.z &&
interactingAgent[i].transform.position.z < patrolBottomLeftFront.z &&
interactingAgent[i].transform.position.y > perimeterCenter.transform.position.y &&
interactingAgent[i].transform.position.y < perimeterCenter.transform.position.y + height
)
{
Debug.Log("Patrol State Activated for " + interactingAgent[i].name);
}
else if (
interactingAgent[i].transform.position.x > chaseBottomLeftFront.x &&
interactingAgent[i].transform.position.x < chaseBottomRightFront.x &&
interactingAgent[i].transform.position.z > chaseBottomLeftFront.z &&
interactingAgent[i].transform.position.z < chaseBottomLeftFront.z &&
interactingAgent[i].transform.position.y > perimeterCenter.transform.position.y &&
interactingAgent[i].transform.position.y < perimeterCenter.transform.position.y + height
)
{
Debug.Log("Chase State Activated for " + interactingAgent[i].name);
}
}
}
}