2016-10-12 2 views
1

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.

+0

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

Antwort

3

Es klingt, als wären Ihre Wände nicht in Ihr Navigationsnetz eingebacken. Wenn Sie dies noch nicht getan haben, fügen Sie das Navigationsfenster zu Ihrem Editor hinzu, indem Sie auf Fenster-> Navigation klicken. Wählen Sie Ihre Wand in der Szene aus und aktivieren Sie im Navigationsbereich auf der Registerkarte Objekt das Kontrollkästchen Navigation statisch. Dann drücke den Bake-Button unten rechts im Navigationsbereich. Vorausgesetzt, Ihre Wand eine Collider hat, sollten Sie etwas sehen:

enter image description here

Der blaue Bereich ist die Orte Navigationsmittel bezeichnet gehen dürfen. Sie werden feststellen, dass der Bereich um Ihre Wand herum nicht blau ist, so dass Ihre Agenten dort nicht durchgehen können.