ShiiikK Geschrieben 23. November 2022 Melden Share Geschrieben 23. November 2022 Zunächst einmal habe ich ein GIF erstellt, um zu zeigen, wie es aktuell bei mir aussieht. GIF zur aktuellen Lage und ein Bild wie es aussehen sollte. Bild wie es sein sollte Ich habe eine Liste von GameObjects, die die BodyParts Temporär hinzufügen und in der richtigen Zeit und Position instanziieren. Jetzt funktioniert das wie erwartet, aber ich möchte das neue bodyParts unter einander spawnen statt darüber. Man kann erkennen das der Kopf "unter" den neuen Körperteilen erscheint, aber er sollte immer oben sein und jedes neue Körperteil sollte unter einander erscheinen. **Was ich versuchte:** : ``` bodyParts.transform.SetAsFirstSibling(); ``` Das verändert aber nur die Hierarchie Anordnung, den selben Effekt habe ich auch wenn ich die Clone manuell verschiebe, das hat aber keinen Einfluss darauf ob etwas übereinander oder untereinander erscheint. Daher hat das für mich nicht funktioniert. Ich weis das es möglich ist, schließlich nutze ich ein bereits bestehendes Unity Game als Vorlage nutze zu meinen Lernzwecken. Hoffe hier ist jemand der sowas in der Art schon gelöst hat. **Hier mein Code der die bodyParts erstellt:** private void CreateBodyParts() { if (snakeBody.Count == 0) { GameObject temp1 = Instantiate(bodyParts[0], transform.position, transform.rotation, transform); if (!temp1.GetComponent<MarkerManager>()) temp1.AddComponent<MarkerManager>(); if (!temp1.GetComponent<Rigidbody2D>()) { temp1.AddComponent<Rigidbody2D>(); temp1.GetComponent<Rigidbody2D>().gravityScale = 0; } snakeBody.Add(temp1); bodyParts.RemoveAt(0); } MarkerManager markM = snakeBody[snakeBody.Count - 1].GetComponent<MarkerManager>(); if (countUp == 0) { markM.ClearMarkerList(); } countUp += Time.deltaTime; if (countUp >= distanceBetween) { GameObject temp = Instantiate(bodyParts[0], markM.markerList[0].position, markM.markerList[0].rotation, transform); if (!temp.GetComponent<MarkerManager>()) temp.AddComponent<MarkerManager>(); if (!temp.GetComponent<Rigidbody2D>()) { temp.AddComponent<Rigidbody2D>(); temp.GetComponent<Rigidbody2D>().gravityScale = 0; } snakeBody.Add(temp); bodyParts.RemoveAt(0); temp.GetComponent<MarkerManager>().ClearMarkerList(); countUp = 0; } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 23. November 2022 Melden Share Geschrieben 23. November 2022 Moin! SpriteRenderern ist ihre Reihenfolge in der Hierarchie egal. Deren Zeichenreihenfolge ist undefiniert, solange sie auf demselben Layer mit derselben sortingOrder sind. Du kannst den SpriteRenderer ansprechen und einen sortingOrder setzen, der dem Index des Elements entspricht: temp.GetComponent<SpriteRenderer>().sortingOrder = snakeBody.Count; Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
ShiiikK Geschrieben 23. November 2022 Autor Melden Share Geschrieben 23. November 2022 vor 54 Minuten schrieb Sascha: Moin! SpriteRenderern ist ihre Reihenfolge in der Hierarchie egal. Deren Zeichenreihenfolge ist undefiniert, solange sie auf demselben Layer mit derselben sortingOrder sind. Du kannst den SpriteRenderer ansprechen und einen sortingOrder setzen, der dem Index des Elements entspricht: temp.GetComponent<SpriteRenderer>().sortingOrder = snakeBody.Count; Top. Das war genau was ich suchte. Klasse 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.