Eltern und Kinder
Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 31 von 85.
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 Reiter ist ein Child eines Pferdes, und sein Skript setzt ihn 1 Einheit über die Mitte 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 Pferd bei (4, 0.5, 2) steht, lautet die position des Reiters (4, 1.5, 1.5), während seine localPosition bei (0, 1, -0.5) bleibt. Wenn das Pferd weitergeht, ändert sich die position, die localPosition hingegen 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
MittelPlatziere die Flagge am Fuß des Masts, gemessen von ihrem Schiff aus.
- In
Start()werden die Zahlen (0.6, 1, 0) vom Schiff aus gemessen, dem übergeordneten Objekt der Flagge. - Ändere in dieser Zeile
transform.positionintransform.localPosition.
Drücke „Spielen“: Die Flagge befindet sich am Fuß des Masts auf dem Schiff. Dann „Prüfen“.
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
}
}
Alle Lektionen in Unity-Scripting: Grundlagen
1C#-Grundlagen in Unity
Hallo, UnityVariablenDezimalzahlen brauchen ein fText in der KonsoleVariablen, die sich etwas merkenIf und ElseZahlen vergleichenRückblick: Münzsammler7Schleifen und Methoden
Wiederholen mit forSchleifen in SchleifenEine Methode schreibenMethoden mit RückgabewertArraysRückblick: Treppe10Dinge finden
Nach Namen suchenTagsNach Typ suchenReferenzen schlagen SuchenUnitys NullRückblick: nächste Münze13Projekt: Weiche den Blöcken aus
Der LäuferBlöcke vom Himmel2Bring es in Bewegung
Platziere den WürfelBewege ihn in jedem FrameDrehe ihn jede SekundeSteuere mit den TastenRückblick: Fahre den Würfel5Vektoren
Vektoren addierenRichtungenLokaler und globaler RaumDiagonale GeschwindigkeitAbstand zwischen ObjektenVector3 ist eine StrukturRückblick: Drohnenpilot8GameObjects und Komponenten
Referenzen im InspectorEine Komponente abrufenFehlende KomponentenEine Komponente hinzufügenRequireComponentEin- und AusblendenRückblick: Lichtschalter11Prefabs und Erzeugen von Instanzen
Prefabs und InstantiateNach Zeitintervall erzeugenIn einem Raster erzeugenListen von ObjektenDas Neueste zurücknehmenZerstörenZufälliges ErzeugenRückblick: Feuerwerk14Abschließende Herausforderungen
MünzmagnetDie Straße überquerenStraßenverkehrTurmbauerLanden oder verfehlen3Der Inspector
Inspector-FelderSerializeFieldFließkommazahlen und MathfInspector-AttributeRückblick: Aufzug6Transformationen und Hierarchie
Eltern und KinderHisse die FlaggeSkalierungDinge anschauenAuf einen Punkt zubewegenRückblick: Mond in Umlaufbahn9Projekt: Fang den Stern
Der FängerEin fallender Stern12Der Lebenszyklus eines Skripts
Awake und StartUpdate und LateUpdateOnEnable und OnDisableDie Reihenfolge im LebenszyklusRückblick: Lifecycle LoggerÜbe selbstständig: Unity-Playground