Skalierung
Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 33 von 85.
transform.localScale vervielfacht die Größe eines Objekts entlang jeder seiner Achsen. Ein Standardwürfel ist auf jeder Seite 1 Einheit groß, daher ist ein Würfel mit localScale (4, 1, 0.5) 4 Einheiten breit, 1 Einheit hoch und eine halbe Einheit tief. Für eine gleichmäßige Größe multiplizierst du mit Vector3.one, also (1, 1, 1). Diese Seifenblase wächst um 0.3 pro Sekunde, bis sie 3 Einheiten breit ist:
public float size = 1f;
void Update()
{
size = Mathf.Min(size + 0.3f * Time.deltaTime, 3f);
transform.localScale = Vector3.one * size;
}Mathf.Min(a, b) gibt die kleinere der beiden Zahlen zurück. Daher wächst size, bis der Wert 3 erreicht ist, und bleibt dann bei 3.
Die Skalierung erfolgt um den Drehpunkt des Objekts, der bei den integrierten Formen von Unity im Zentrum liegt. Ein 1 Einheit großer Würfel, der auf dem Boden steht, hat seinen Mittelpunkt bei y = 0.5. Skalierst du ihn auf eine Höhe von 3 Einheiten, reicht er von dort aus 1.5 nach oben und 1.5 nach unten, sodass seine Hälfte im Boden versinkt. Damit er auf dem Boden steht, muss sein Mittelpunkt auf der halben Höhe liegen: y = 1.5.
Die Größe eines untergeordneten Objekts wird mit der seines übergeordneten Objekts multipliziert: Ein untergeordnetes Objekt mit localScale (1, 1, 1) unter einem um den Faktor 2 skalierten übergeordneten Objekt wird doppelt so groß dargestellt. transform.lossyScale gibt diese endgültige Größe in der Welt aus und ist schreibgeschützt; localScale ist der Wert, den du festlegst.
Aufgabe
MittelLass den Eiswürfel auf 0.4 schmelzen, sodass er auf dem Boden bleibt.
- Füge ein Feld
float size = 1f;hinzu. Setze inUpdate()size = Mathf.Max(size - melt * Time.deltaTime, 0.4f);. - Setze
transform.localScale = Vector3.one * size;. - Halte seine Unterseite bei y = 0: Setze den y-Wert der Position auf
size / 2und behalte x und z bei.
Drücke auf „Spielen“: Der Würfel schrumpft und bleibt auf dem Boden. Drücke dann auf „Prüfen“.
Probier es selbst
using UnityEngine;
public class Melt : MonoBehaviour
{
public float melt = 0.2f;
void Update()
{
// Pro Sekunde um melt verkleinern, bis auf 0.4, wobei die Unterseite auf dem Boden bleibt
}
}
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