Ich habe ein Unity-Video verfolgt, das auf YouTube verfügbar ist, um eine Zustandsmaschine für deine KI zu erstellen, aber wenn der Feind patrouilliert, gehen sie durch Wände. Ich habe versucht, die RigidBody-Komponente dem Gegner hinzuzufügen, aber das macht ihre Bewegung zu jedem Wegpunkt komplett zunichte.Einheit - Feindliche AI durch Wände gehen
Hier ist der Code, der die AI bewegen zu jedem Wegpunkt der feindlichen Mauern in der Karte herumlaufen machen
private void Look()
{
RaycastHit hit;
if (Physics.Raycast(enemy.eyes.transform.position, enemy.eyes.transform.forward, out hit, enemy.sightRange) && hit.collider.CompareTag("Player"))
{
enemy.chaseTarget = hit.transform;
InChaseState();
}
}
void Patrol()
{
enemy.meshRendererFlag.material.color = Color.green; //Test to see what state the enemy is in
enemy.navMeshAgent.destination = enemy.waypoints[nextWaypoint].position; //Select the current waypoint
enemy.navMeshAgent.Resume(); //Start walking again
if (enemy.navMeshAgent.remainingDistance <= enemy.navMeshAgent.stoppingDistance && !enemy.navMeshAgent.pathPending) //Checking to see if we've reached our destination
{
nextWaypoint = (nextWaypoint + 1) % enemy.waypoints.Length; //Go to next waypoint and should loop as expected
}
}
Wer weiß, wie zu bearbeiten Code macht jeden Wegpunkt zu erreichen? Vielen Dank.
Die Wände könnten nicht aus dem NavMesh herausgehauen werden ?! Die Wände benötigen einen Collider für den Algorithmus, um dies zu tun. Sie müssen auch Navigationsstatik sein (kann in der statischen Checkboxes Drop-Down gesetzt werden) oder ein NavMesh-Hindernis, das eine Komponente ist, wenn ich mich richtig erinnere. – Wipster