ONeillsBude Geschrieben 19. Oktober 2018 Melden Share Geschrieben 19. Oktober 2018 Hallo, ich habe versucht mit meinen Charakter irgendwie zur Wand zu drehen, habe im Internet auf englischen Seiten schon Tipps gefunden wie das geht und habe mir das Script zusammen gebaut: using System.Collections; using System.Collections.Generic; using UnityEngine; public class WandCheck : MonoBehaviour { public Transform player; RaycastHit hit; // Use this for initialization void Start () { player = GameObject.FindWithTag("PlayerKopf").transform; } // Update is called once per frame void Update () { Debug.DrawRay (player.transform.position, transform.forward, Color.cyan); Vector3 Richtung = Vector3.up - player.transform.position; if (Input.GetKeyDown (KeyCode.B)) { if (Physics.Raycast (player.transform.position, player.transform.forward, out hit, 0.5f)) { var hitRotation = Quaternion.FromToRotation (Richtung, hit.normal); transform.rotation = hitRotation; Debug.Log (hitRotation); } } } } Am Anfang schien es auch zu funktionieren, als ich die erste Wand vor mir ausprobiert hatte, doch irgendwie stellen die anderen Wände meinen Charakter irgendwie schief hin, oder werfen den Charakter komplett auf die Seite. Woran kann es liegen das der Charakter nicht immer zur Wand schaut, wie er soll? Und wie kann ich den Charakter mit dem Rücken zur Wand drehen? Wenn ich versuche die transform.rotation.x und z zu ändern, damit mein Charakter wenigstens gerade steht bekomme ich den Error: error CS1612: Cannot modify a value type return value of `UnityEngine.Transform.rotation'. Consider storing the value in a temporary variable. So sieht das dann in meinem Spiel aus: Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 19. Oktober 2018 Melden Share Geschrieben 19. Oktober 2018 vor 1 Stunde schrieb ONeillsBude: Wenn ich versuche die transform.rotation.x und z zu ändern Niemals an einem Quaternion selber Werte ändern, das bringt dir nichts, selbst wenn du verstanden hast, wie die Dinger funktionieren Quaternion.FromToRotation bringt dir hier auch nichts. Was du willst, ist eher var horizontalNormal = hit.normal; horizontalNormal.y = 0; transform.forward = horizontalNormal; Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
ONeillsBude Geschrieben 19. Oktober 2018 Autor Melden Share Geschrieben 19. Oktober 2018 vor 29 Minuten schrieb Sascha: Niemals an einem Quaternion selber Werte ändern, das bringt dir nichts, selbst wenn du verstanden hast, wie die Dinger funktionieren Quaternion.FromToRotation bringt dir hier auch nichts. Was du willst, ist eher var horizontalNormal = hit.normal; horizontalNormal.y = 0; transform.forward = horizontalNormal; Das ist genau das was ich will, vielen Dank! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.