2016-07-20 7 views
0

Könnte jemand bitte vielleicht mein Projekt herunterladen und sehen? Es ist sehr einfach, funktioniert aber nicht wie im Tutorial.Warum in meinem Einheitsprojekt funktioniert der Verfolgungs-Teil nicht?

In meinem Projekt habe ich IsTrigger auf True in ThirdPersonController oder AIThirdPersonController für eines der Zeichen festgelegt. Dies lässt das Zeichen von der Ebene herunterfallen.

Ich änderte auch eines der Zeichen als Player markiert und änderte den Zustand von PATROL zu CHASE, aber das änderte nichts. Der andere Spieler jagt den Spieler, den ich kontrolliere und laufe, niemals.

Warum fallen die Spieler, wenn ich in meinem Projekt IsTrigger auf true setze?

Ich sehe in dem Video, dass der Lehrer eine Maze-Ebene verwendet. Ist das ein Paket, das ich in die Assets importieren soll oder ist es schon irgendwo in den Assets? Ich habe gerade normales Flugzeug hinzugefügt, weil ich kein Labyrinth finden konnte.

Hier ist ein Link für mein Projekt von meinem OneDrive. Der Dateiname ist Demo AI.rar:

Project in OneDrive

Hier ist ein Link für die Video-Tutorial ich zu folgen versucht bin. Es wird vermutet, einfach zu sein, nehme ich an:

Tutorial

Hier ist die BasicAi Klasse ich in meinem Projekt verwenden, das gleiche Skript aus dem Tutorial-Video:

using System.Collections; 
using UnityStandardAssets.Characters.ThirdPerson; 

public class BasicAi : MonoBehaviour { 

    public NavMeshAgent agent; 
    public ThirdPersonCharacter character; 

    public enum State { 

     PATROL, 
     CHASE 
    } 

    public State state; 
    private bool alive; 

    // Variables for patrolling 
    public GameObject[] waypoints; 
    private int waypointInd = 0; 
    public float patrolSpeed = 0.5f; 


    // Variable for chasing 
    public float chaseSpeed = 1f; 
    public GameObject target; 


    // Use this for initialization 
    void Start() { 

     agent = GetComponent<NavMeshAgent>(); 
     character = GetComponent<ThirdPersonCharacter>(); 

     agent.updatePosition = true; 
     agent.updateRotation = false; 

     state = BasicAi.State.PATROL; 

     alive = true; 

     StartCoroutine ("FSM"); 

    } 

    IEnumerator FSM() 
    { 
     while (alive) 
     { 
      switch (state) 
      { 

      case State.PATROL: 
       Patrol(); 
       break; 
      case State.CHASE: 
       Chase(); 
       break; 
      } 
      yield return null; 
     } 
    } 

    void Patrol() 
    { 
     agent.speed = patrolSpeed; 

     if (Vector3.Distance (this.transform.position, waypoints [waypointInd].transform.position) >= 2) { 

      agent.SetDestination (waypoints [waypointInd].transform.position); 
      character.Move (agent.desiredVelocity, false, false); 
     } else if (Vector3.Distance (this.transform.position, waypoints [waypointInd].transform.position) <= 2) { 
      waypointInd += 1; 
      if (waypointInd > waypoints.Length) { 
       waypointInd = 0; 
      } 
     } 
     else 
     { 
      character.Move (Vector3.zero, false, false); 
     } 
    } 

    void Chase() 
    { 
     agent.speed = chaseSpeed; 
     agent.SetDestination (target.transform.position); 
     character.Move (agent.desiredVelocity, false, false); 
    } 

    void OnTriggerEnter(Collider coll) 
    { 
     if (coll.tag == "Player") 
     { 
      state = BasicAi.State.CHASE; 
      target = coll.gameObject; 
     } 
    } 
} 
+0

Ich kann nicht mehr als einen Link noch posten, also füge ich hier einen weiteren Link zu meinem Projekt in megafileuload hinzu http://www.megafileupload.com/nYky/Demo_AI.rar –

+0

Ich habe die Archive aber nicht heruntergeladen Wenn Sie die IsTrigger() verwenden, um Kollision zu behandeln, werden Sie Objekte durchlaufen. – Cabrra

Antwort

0

Sobald ein Collider ist Wenn ein Auslöser nicht mehr mit Objekten kollidiert, ist es am besten, ein untergeordnetes Objekt mit einem Collider zu platzieren und auf den Trigger zu setzen. Auf diese Weise kollidiert der ursprüngliche Collider immer noch mit Ihrem Boden.

Was deine andere Frage angeht, wie beziehst du dich auf deine dritte Person, schleppst du sie von der Szene in den Inspektor, und du musst dein Navmesh auch in deine Szene einbauen. Ich habe Ihr Projekt nicht angeschaut, da dies viel Zeit in Anspruch nehmen würde, aber vielleicht sollten Sie das Tutorial noch einmal durchgehen und sehen, wie sie den Charakter referenzieren. Bei den eingebauten Zeichen müssen Sie normalerweise zuerst auf den Namensraum zugreifen.

Verwandte Themen