Jump to content
Unity Insider Forum

DrawRay


Kojote

Recommended Posts

Grüße!

Kann mir mal wer verraten, warum mein DrawRay nicht funktioniert, hier mal mein Code:

        protected virtual void OnDrawGizmos() {
#if UNITY_EDITOR
            Gizmos.color = colliderColour;
            Gizmos.DrawSphere(transform.position, spawnRadius);

            Vector3 center = this.gameObject.transform.parent.transform.position;

            Gizmos.color = directionColour;
            Gizmos.DrawRay(transform.position, center);
#endif
        }

Laut Tutorial sollte das so stimmen. Aber anstatt zum Center, schießt er das DrawRay sonst wo hin. 😕

Grüße von Kojote

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn DrawLine nicht das macht was du willst, sind wahrscheinlich deine input Parameter falsch.

Lass dir doch auch mal eine Kugel an die center Position zeichnen und schau ob die da ist, wo du sie erwartest.

 

Den Vektor von transform.position zu center findest du ganz einfach über 'center - transform.position' raus.

Das kannst du mal in DrawRay einsetzen, aber das sollte keinen Unterschied machen. 

Link zu diesem Kommentar
Auf anderen Seiten teilen

 Wenn du von 3 nach 5 willst dann rechnet man 2 = 5 - 3; Das nennt man manchmal auch Differenz, aber ist ein Richtungsvektor

Also Direction = TargetPosition - CurrentPosition..
In deinem Fall
var direction = parent.transform.position - transform.position.

Aber DrawLine sollte eigentlich mit bereits funktionieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Kleine Frage hätte ich dann noch, habs nun noch mal andersrum aufgebaut:

protected virtual void OnDrawGizmos() {
#if UNITY_EDITOR
            Gizmos.color = colliderColour;
            Gizmos.DrawSphere(this.transform.position, spawnRadius);

            if (drawLines == false) {
                return;
            }

            Gizmos.color = directionColour;
            Transform[] allChildren = GetComponentsInChildren<Transform>();
            for (int i = 0; i < this.transform.childCount; i++) {}

            for (int i = 0; i < allChildren.Length; i++) {
                Gizmos.DrawLine(this.transform.position, allChildren[i].transform.position);
            }
#endif
        }

Bietet da Unity noch ne elegantere Lösung als jedes mal die Kinder neu zu suchen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...