Ich habe eine Kamera, die das userInterface (Leinwand) -Objekt in der Vorderseite meiner Kamera zeigt. Ich aktualisiere nur meine Benutzerschnittstellenposition, wenn der Kamera Raycast nicht mein userInterface Objekt Collider trifft. so etwas wie diesObjektdrehung ist beim Drehen der Kamera nicht korrekt
public class UIPlacerAtCamFront : MonoBehaviour {
public GameObject userInterface;
public float placementDistance;
Vector3 uiPlacementPosition;
RaycastHit objectHit;
void Update() {
Vector3 fwd = this.transform.TransformDirection(Vector3.forward);
//Debug.DrawRay(this.transform.position, fwd * 50, Color.green);
if (Physics.Raycast(this.transform.position, fwd, out objectHit, 50))
{
//raycast hitting the userInterface collider, so do nothing, userinterface is infornt of the camrea already
}
else
{
//raycast is not hitting userInterfae collider, so update UserInterface position accoding to the camera
uiPlacementPosition = this.transform.position + this.transform.forward * placementDistance;
userInterface.transform.position = uiPlacementPosition;
}
//Continuously update userInterface rotation according to camera
userInterface.transform.rotation = this.transform.rotation;
}
}
Das obige Skript mit meiner Kamera angebracht ist, zeigt es das Objekt richtig, aber, wie ich beginne meine Kamera meiner UI-Drehung Objekt sieht sehr seltsam zu drehen, wie unten Bild vorgeschlagen
auftritt ich weiß, dass das Problem in Rotation, so dass ich müde meinen diese Drehung Code ändern
userInterface.transform.rotation = this.transform.rotation;
dieser
userInterface.transform.localEulerAngles = new Vector3 (this.transform.localEulerAngles.x,
0,
this.transform.localEulerAngles.z);
aber eine andere seltsame Rotation für mich bringen, wie weiter unten
Ich möchte, dass meine userinteface Objekt meiner Kamera Correclty Gesicht, auch meine Kamera den Anfang oder das Ende beobachten meines Benutzeroberflächenobjekts. Wie kann ich meine Benutzeroberfläche entsprechend der Kameradrehung richtig drehen?
würde ich empfehlen Modus 'Platz auf dem Bildschirm auf Leinwand Einstellung machen - Overlay'. – Iggy
Ich bin unsicher, was das gewünschte Verhalten wäre (auf dem zweiten Bild). Würde es Ihnen etwas ausmachen, es ein wenig auszuarbeiten? Auch ... wenn Sie Probleme mit euler Winkeln haben versuchen Sie 'Quaternion.LookAt()', ich finde es intuitiver und kugelsicher. –
@lggy ich kann es nicht Bildschirm Platz machen –