2016-07-23 3 views
0

Zuerst ein Video, das zeigt, wie sich der Charakter bewegt. Was ich tun möchte, ist, den Charakter so zu machen, dass er sich nicht nur bewegt, sondern von einem oder mehreren bestimmten Punkten zu einem oder mehreren anderen Punkten wandert.In der Einheit, Warum bewegt sich mein Charakter so seltsam und alles stottert bei der Verwendung von Wegpunkten?

Moving Character Video

Und jetzt, was ich bisher getan hat.

Zu meiner Hierarchie hinzugefügt: Gelände, Hauptkamera, gerichtetes Licht, Zylinder und ThirdPersonController.

Im ThirdPersonController i im Menü angeklickt: Component> Navigation> Nav Mesh-Agent-

Dann zum ThirdPersonController geschleppt ein Patroll.cs Skript.

Im ThirdPersonController Inspector im Bereich Patroll habe ich 2 Punkte Wände und Zylinder hinzugefügt. Ich möchte, dass der Charakter von den Wänden (Gebäude) zum Zylinder läuft. Auch im Bereich "Patroll" habe ich dem Agenten ThirdPersonController (Nav Mesh Agent) hinzugefügt.

Dann habe ich in der Hierarchie auf das Gelände geklickt, um es statisch zu machen, dann im Menü auf Fenster> Navigation> Backen geklickt und dann auf die Schaltfläche Backen geklickt.

Dann, wenn das Spiel läuft, bewegt sich der Charakter auf seltsame Weise automatisch und alles ruckelt. Bevor das ThirdPersonController das Patroll Script und den Nav Mesh Agent hinzugefügt wurde, konnte ich das Zeichen mithilfe von WSAD Schlüsseln glätten.

Das Ziel für jetzt, was ich tun möchte, ist einmal das Spiel zu laufen, wenn ich gehe mit WSAD Tasten schließen oder berühren Sie die Wände (Gebäude), dann wird der Charakter automatisch auf die Zylinderposition gehen. Oder wenn das Spiel läuft, wird der Charakter automatisch von seiner Startposition zu den Wänden und dann zu den Zylinder 3 Wegpunkten gehen.

Dies ist das Patroll Skript in C#

using UnityEngine; 
using System.Collections; 

public class Patroll : MonoBehaviour { 

    public Transform[] points; 
    private int destPoint = 0; 
    public NavMeshAgent agent; 

    // Use this for initialization 
    void Start() { 


     agent = GetComponent<NavMeshAgent>(); 
     // Disabling auto-braking allows for continuous movement 
     // between points (ie, the agent doesn't slow down as it 
     // approaches a destination point). 
     agent.autoBraking = false; 

     GotoNextPoint(); 

    } 

    void GotoNextPoint() { 
     // Returns if no points have been set up 
     if (points.Length == 0) 
      return; 

     // Set the agent to go to the currently selected destination. 
     agent.destination = points[destPoint].position; 

     // Choose the next point in the array as the destination, 
     // cycling to the start if necessary. 
     destPoint = (destPoint + 1) % points.Length; 
    } 


    void Update() { 
     // Choose the next destination point when the agent gets 
     // close to the current one. 
     if (agent.remainingDistance < 0.5f) 
      GotoNextPoint(); 
    } 
} 

Antwort

0

der ThirdPersonController Skriptkomponente Befreien Sie sich, wenn es Patroll darin Skriptkomponente hat.

+0

Ich deaktivierte das Kontrollkästchen in der dritten Person Controller Inspektor auf: Third Person User Control (Skript), aber es hat nichts geändert. –

+0

Entfernen Sie die ThirdPersonController-Skriptkomponente. Und wenn eine 'CharacterController'-Komponente vorhanden ist, entfernen Sie sie. –

Verwandte Themen