2016-11-11 2 views
2

Ich benutze Unity Version 5.4.1f1 PersonalWarum stottert der ThirdPersonController-Charakter, wenn er auf der Plattform steht, die sich nach einem Klick auf eine Schaltfläche bewegt?

Ich habe zwei Animationen Clips. Rief sie auf und ab. Ich habe in der Hierarchie einen ThirdPersonController mit Hauptkamera als Kind.

Dann habe ich ein leeres GameObject ich benannte es in: Aufzug. Unter dem Aufzug habe ich drei Kinder: Platform, Platform1, Capsule. Die Kapsel habe ich umbenannt in: Button.

Auf den Button habe ich ein kleines Skript angehängt.

Sowohl Up- als auch Down-Animationen Clips, die ich als Legacy festgelegt habe. Und zum Elevator (GameObject) ich hinzugefügt Animation Komponente die Anzahl der Elemente im Inspektor auf 2 geändert und die Up und Down Animationen hinzugefügt.

Jetzt, wenn ich das Zeichen auf die Plattform bewegen und dann auf den Button klicken, hebt sich der Aufzug. Ein weiterer Klick hebt es ab.

Das Problem ist, wenn man auf den Knopf klickt und ihn anhebt, ist alles stotternd. Und wenn ich wieder klicke, um es nach unten zu heben, stolpert der Spieler in den meisten Fällen auch aus der Plattform.

Screenshot des Unity Editor:

Screenshot

Dies ist das csharp Skript:

using UnityEngine; 
using System.Collections; 

public class Lift : MonoBehaviour { 

    private bool pressedButton = false; 
    private bool isElevatorUp = false; 

    GameObject target; 

    void OnMouseOver() 
    { 
     pressedButton = true; 
    } 

    void OnMouseExit() 
    { 
     pressedButton = false; 
    } 

    void OnMouseDown() 
    { 
     if(isElevatorUp == false) 
     { 
      target = GameObject.Find("Elevator"); 
      target.GetComponent<Animation>().Play("Up"); 
      isElevatorUp = true; 
     } 
     else 
     { 
      target = GameObject.Find("Elevator"); 
      target.GetComponent<Animation>().Play("Down"); 
      isElevatorUp = false; 
     } 
    } 

    void OnGUI() 
    { 
     if(pressedButton == true) 
     { 
      GUI.Box(new Rect(300, 300, 200, 20), "Press to use lift!"); 
     } 
    } 
} 

Dies ist ein kleiner Videoclip i das Stottern aufgezeichnet zeigt. Ich löste die anderen Probleme, die ich mit den Animationen hatte. Das einzige Problem ist jetzt das Stottern, wenn der Spieler auf der Plattform steht und ich auf den Knopf klicke.

Wenn der Player nicht auf der Plattform ist und ich auf den Knopf klicke, stottert es nicht. Das Stottern beginnt bei 51 Sekunden.

Video

+0

@ChuckSavage Ich habe zwei Animationsclips Down und Up erstellt und den Elevator (GameObject) aufgezeichnet. Wenn ich also auf den Knopf klicke, werden die Animationen abgespielt. Es ist nicht so, dass ich das Objekt mit dem Skript verschiebe. Und der Spieler bewegt sich nur auf der Plattform und wenn ich auf den Knopf klicke und er die Animation spielt, hebt er den Spieler hoch/runter. –

+1

Versuchen Sie, den Charakter auf der Plattform zu erziehen, während Sie darauf sind. – Everts

+0

@Everts Dies funktioniert perfekt. Im Editor habe ich den ThirdPersonController als Kind unter dem Elevator platziert. Jetzt funktioniert es reibungslos. Ich frage mich nur, ob es gut ist, es im Editor zu machen, oder sollte ich es in das Skript schreiben, wie du gesagt hast, während der Spieler auf der Plattform ist, Kind von Elevator und wenn es nicht auf der Plattform ist, macht es kein Kind. –

Antwort

0

Wie wird der Spieler nach oben bewegt wird? Ist es ein Skript, das seine Position ändert? Ich vermute es ist der Collider auf der Plattform.

Scheint, der Collider agiert wie ein Hammer und schlägt den Spieler hart genug, um sie schneller als die Plattform zu bewegen. So scheint der Spieler zu ruckeln und wird dann wieder getroffen, wenn die Plattform aufholt.

Es ist in der Physik. Ich würde das überprüfen.

Verwandte Themen