Eltern und Kinder
Teil des Abschnitts Grundlagen des Scripting in Unity der Unity-Journey von Coddy. Lektion 24 von 67.
In der Hierarchy wird ein Objekt, das auf ein anderes gezogen wird, zu dessen child und wird eingerückt unter seinem parent angezeigt. Ein Child bewegt, dreht und skaliert sich mit seinem Parent: Bewege den Parent, und jedes Child kommt mit, ganz ohne Code auf den Children.
Unity speichert die Position eines Childs relativ zu seinem Parent. transform.localPosition ist dieser Versatz, gemessen vom Parent aus; transform.position ist die Position in der Welt. Dieser Rider ist ein Child eines Horse, und sein Skript setzt ihn 1 Einheit über den Mittelpunkt des Pferdes und eine halbe Einheit nach hinten, egal, wo das Pferd steht:
void Start()
{
transform.localPosition = new Vector3(0, 1, -0.5f);
}Wenn das Horse bei (4, 0.5, 2) steht, lautet die position des Riders (4, 1.5, 1.5), während seine localPosition bei (0, 1, -0.5) bleibt. Wenn das Horse weiterläuft, ändert sich die position, die localPosition jedoch nicht. Der Versatz wird entlang der eigenen Achsen des Parents gemessen. Wenn sich der Parent also dreht oder skaliert wird, dreht und skaliert sich der Versatz mit ihm. Bei einem Objekt ohne Parent sind localPosition und position identisch.
Aufgabe
MittelDie Flagge ist ein untergeordnetes Objekt des Schiffs, und das Schiff befindet sich nicht in der Mitte der Welt. Die Start()-Methode der Flagge soll sie am Fuß des Masts platzieren, 0.6 nach rechts und 1 nach oben, gemessen relativ zum Schiff. Sie weist diese Werte jedoch position zu, sodass die Flagge weit entfernt vom Schiff landet.
- Korrigiere
Start(), damit die Flagge am Fuß des Masts startet. - Solange die Pfeiltaste nach oben gedrückt wird, hisse die Flagge: Sie steigt mit
climbEinheiten pro Sekunde, bis ihre Höhe, gemessen relativ zum Schiff, 4 beträgt, also die Spitze des Masts erreicht ist, und bleibt dort stehen.
Drücke Play, halte die Pfeiltaste nach oben gedrückt und klicke dann auf Check.
Probier es selbst
using UnityEngine;
public class Hoist : MonoBehaviour
{
public float climb = 1f;
void Start()
{
// Der Fuß des Masts: 0.6 nach rechts und 1 nach oben, gemessen vom Ship aus
transform.position = new Vector3(0.6f, 1, 0);
}
void Update()
{
// Solange die Pfeiltaste nach oben gedrückt wird, klettere, bis die Höhe über dem Ship 4 beträgt
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen des Scripting in Unity
1Dein erstes Skript
Hallo, UnityPlatziere den WürfelBewege dich in jedem FrameDrehe dich jede SekundeSteuere mit den TastenRückblick: Steuere den Würfel4Vektoren
Vektoren addierenRichtungenLokaler und globaler RaumDiagonale GeschwindigkeitAbstand zwischen ObjektenVector3 ist ein StructRückblick: Drohnenpilot7Projekt: Fang den Stern
Der FängerEin fallender Stern10Der Lebenszyklus eines Skripts
Awake und StartUpdate und LateUpdateOnEnable und OnDisableDie Reihenfolge im LebenszyklusRückblick: Lifecycle Logger5Transformationen und Hierarchie
Eltern und KinderSkalierungDinge ansehenAuf einen Punkt zubewegenRückblick: Umlaufender Mond8Dinge finden
Nach Namen findenTagsNach Typ findenReferenzen schlagen FindUnitys NullRückblick: Nächste Münze11Projekt: Weiche den Blöcken aus
Der LäuferFallende Blöcke6GameObjects und Komponenten
Referenzen im InspectorEine Komponente abrufenFehlende KomponentenEine Komponente hinzufügenRequireComponentEin- und AusblendenRückblick: Lichtschalter