Kojote Geschrieben 23. September 2019 Melden Share Geschrieben 23. September 2019 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 More sharing options...
Mr 3d Geschrieben 23. September 2019 Melden Share Geschrieben 23. September 2019 Ich glaube du willst Gizmos.DrawLine() ? center ist die Position von deinem parent, kein Richtungsvektor Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 23. September 2019 Autor Melden Share Geschrieben 23. September 2019 Ja ich wollte von meinem Child zum Parent eine Draw Line. Aber irgendwie funktionierts nicht, wie bekomme ich den Vevtor heraus. Habs auch mit Vector.up und Co probiert, aber da gehts ja nur in eine Richtung, nicht zum Parent. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mr 3d Geschrieben 23. September 2019 Melden Share Geschrieben 23. September 2019 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 More sharing options...
MaZy Geschrieben 23. September 2019 Melden Share Geschrieben 23. September 2019 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 More sharing options...
Kojote Geschrieben 23. September 2019 Autor Melden Share Geschrieben 23. September 2019 Achso, stimmt ja, alles klar, danke! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 23. September 2019 Autor Melden Share Geschrieben 23. September 2019 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 More sharing options...
Sascha Geschrieben 23. September 2019 Melden Share Geschrieben 23. September 2019 Du kannst mit foreach über ein Transform iterieren, um einmal alle Kinder zu haben: foreach (Transform child in transform) 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.