2017-07-22 1 views
0

Also verwende ich das FPS-Controller-Prefab aus dem Standard-Asset und ich habe mein Skript "Camera Push Up Effect" an die Hauptkamera (FirstPersonCharacter) angehängt. Alles funktioniert so, wie es sollte, aber das Problem, das ich gerade habe, ist, wenn der Spieler schießt, er drückt die Kamera nicht nach oben. Was ich hier erreichen will, ist, der Waffe des Spielers etwas Rückstoß zu geben, damit sie nicht an einer Stelle bleibt, wenn der Spieler schießt. Ich möchte auch die Spielerrotation auf der x-Achse begrenzen, damit die Waffe nicht für immer weitergeht (die Min wäre -90 Grad und die Max wäre 0).Wie kann ich die Kamera nach oben drücken, wenn der Spieler seine Waffe abfeuert und die Position der Waffe zurückstellt, wenn sie aufgehört hat zu schießen?

using UnityEngine; 
using InControl; 

public class CameraPushUpEffect : MonoBehaviour 
{ 
    public float rotateSpeed; 
    public float maxRotationX; 
    public float minRotationX; 
    private Vector3 V3Rotate = Vector3.zero; 

    // Update is called once per frame 
    void Update() 
    { 
     InputDevice device = InputManager.ActiveDevice; 

     if(device.RightBumper) // The player is shooting. 
     { 
      pushCameraUp(); 
     } 
     else if (transform.localRotation.x != 0) // Slerp back to the original unrotated position. 
     { 
      transform.localRotation = Quaternion.Slerp(transform.localRotation, Quaternion.identity, 
                 Time.deltaTime * rotateSpeed); 
     } 
    } 

    private void pushCameraUp() 
    { 
     V3Rotate.x += rotateSpeed * Time.deltaTime; 
     float newRotationX = Mathf.Clamp(V3Rotate.x, minRotationX, maxRotationX); 
     Quaternion maxRotation = Quaternion.Euler(newRotationX, 0, 0); 
     transform.localRotation = Quaternion.Slerp(transform.localRotation, maxRotation, Time.deltaTime * rotateSpeed); 
    } 
} 
+0

Was ich verstehen, wenn Ihr Spieler schießen beginnt, Ihre pushCameraUp(); Funktion beginnt zu arbeiten. ABER Sie tun dies in update, so dass transform.localRotation.x wegen der Funktion geändert wird. Und sofort beginnt Ihr "else if" -Zustand zu arbeiten. Versuchen Sie dies zu bestätigen, indem Sie die else if-Anweisung befehlen. Wenn ich richtig bin, müssen Sie möglicherweise Koroutinen verwenden. Oder ein Bool könnte funktionieren – Thalthanas

+0

@EmreE Ich habe den else auskommentiert wenn und es immer noch nicht die X-Drehung der Waffe ändert (aus dem Inspektor bleibt der Wert 0 vollständig. Es geht nicht auf irgendeinen Wert und dann zurück zu 0). Idealerweise sollte das else if nur dann auftreten, wenn der Spieler den Feuerknopf losgelassen hat. –

+0

@EmreE Okay, ich habe meine Kamera in diesem Moment bewegt, aber nur indem ich ein Transformationsobjekt der Hauptkamera zu diesem Skript hinzufüge und dieses Skript an mein Waffenobjekt anfüge (natürlich hat die Hauptkamera dieses Skript nicht mehr). Meine Frage ist, warum muss ich den zusätzlichen Schritt des Hinzufügens eines Transformationsobjekts der Hauptkamera gehen? Warum muss es so gemacht werden 'playerCamera.transform.localRotation = ...' anstelle von 'transform.localRotation = ...'? –

Antwort

0

Es scheint es zu sein, dass der Hauptschuldige ist die Maus-Look-Skript in der ersten Person-Controller-Skript (Dieses Skript Teil des FPSController Fertig ist). Beachten Sie, dass die Einheit, die ich verwende, die Mausansicht hat, ohne MonoBehaviour zu erweitern, und als private serialisierbar festgelegt ist. Der Beitrag, in dem ich meine Antwort gefunden habe, erwähnt, dass es nicht möglich ist, die Kamera (X-Achse) zu drehen, wenn die Maus-Komponente an der Hauptkamera angebracht ist, was eindeutig nicht der Fall ist (FPSController ist das Elternteil des Kindes FirstPersonCharacter ist als die Hauptkamera gekennzeichnet und FirstPersonCharacter hat keine Maus-Optik daran). Also habe ich einfach das First Person Controller-Skript deaktiviert, um zu bestätigen, dass dies der Fall war und tatsächlich der Fall war.

Hier ist der Link für den Fall, dass andere auch einen Blick darauf werfen möchten.

Help with Recoil for guns

Verwandte Themen