2017-04-17 2 views
0

Zeichen ist das übergeordnete Objekt und hat Kamera-Objekt als Kind-Objekt (FPS-Typ).Kind Spielobjekt bewegt sich schneller als Eltern Spielobjekt

Kameraobjekt hat ein Skript, das Raycast "wirft", um Objekte davor zu erkennen.

Das Kameraobjekt hat ein untergeordnetes Objekt "Fadenkreuz", an das ein Skript "ShowCrosshair" angehängt ist.

Character <- Camera <- Crosshair. 

Erwartetes Verhalten sollte ist: Ich bewege die Maus nach oben und nach unten, dreht Kamera um y-Achse und mit ihr dem Fadenkreuz Objekt verbleibende bewegt sich sanft in der Mitte des Bildschirms.

Aber wenn ich die Maus nach oben/unten bewege, bewegt sich das Fadenkreuz schneller als die Kamera sich drehen kann und verschwindet.

Hier ist mein Code für die Kamera drehen:

//vertical is float and is initially zero and transform is for the current gameObject i.e Camera 
vertical -= Input.GetAxis("Mouse Y"); 
transform.localRotation = Quaternion.Euler(new Vector3(vertical, 0.0f, 0.0f)); 

Dieses Skript Kamera Objekt angebracht ist.

Es ist wünschenswert, dass Crosshair mit der Kamera bewegen, weshalb es von Kamera-Objekt parented ist.

Antwort

0

Ich denke, Ihr unerwünschtes Verhalten happends, weil, wenn Sie sich bewegen, drehen oder skalieren die Eltern alle Childs, deshalb betroffen sind Verwandeln, wenn Sie die Kamera drehen, damit das Fadenkreuz bewegt und dann drehen Sie das Fadenkreuz so dass es zu ein zweites Mal drehen und außer Sichtweite gehen.

+0

das ist was ich will. Was ich nicht möchte, ist, dass sich das Fadenkreuzobjekt schneller bewegt als das Kameraobjekt. –

+0

Sind Sie sicher, dass es sich nicht schneller bewegt, weil es sich zweimal bewegt? – pasotee

0

Es sieht wie Sie rund um die X-Achse anstelle des Y (vertikal) in dieser Linie drehen:

transform.localRotation = Quaternion.Euler(new Vector3(vertical, 0.0f, 0.0f)); 

Auch sollten Sie wahrscheinlich multiplizieren, um die Auswirkungen auf die Eingabe durch die Delta-Zeit oder es wird viel zu schnell bewegen.

vertical -= Input.GetAxis("Mouse Y") * Time.deltaTime; 

Aber ich glaube nicht, dass irgendetwas davon Ihr Problem ist. Sie haben bemerkt, dass das Skript an Camera angehängt ist. Ist es auch an Crosshair angeschlossen? Wenn ja, dann wirst du doppelte Rotation bekommen. Wenn nicht, sehen Sie sich an, welche Skripts die Rotation von Crosshair ändern könnten. Wenn Sie nur die Kamera bewegen, sollten Sie nichts rotierendes Crosshair benötigen (weil es sich mit seinem Elternteil bewegt).

Verwandte Themen