Flickernde Lichter erstellen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Flickernde Lichter sind eine kraftvolle Möglichkeit, den Ton einer Umgebung zu beeinflussen. Zum Beispiel kann ein Zuhause mit einer konstanten Helligkeit warm und einladend wirken, aber wenn Sie flackernde Lichter in den Flur dieses Hauses hinzufügen, wird es unheimlich und könnte auf mögliche Gefahren hindeuten. Durch strategisches Modellieren und Skripten verschiedener Lichtquellen in Ihrer Erfahrung können Sie eine ganz neue Ebene des Geschichtenerzählens in Ihrer Umgebung hinzufügen.

Wie bei allen 3D-Kreationen gibt es viele Möglichkeiten, um ein bestimmtes Ziel zu erreichen. In diesem Leitfaden können Sie schnell eine flackernde Lichtanimation mit Tools und Methoden erstellen, die nur innerhalb von Studio mit ein paar grundlegenden Assets, einschließlich einer .rbxm-Datei für das Modell einer Bankerlampe, verfügbar sind, die untergeordnete Class.MeshParts enthält, die Sie an die Ästhetik Ihrer eigenen Erfahrungen anpassen können.

Befolgen Sie in der folgenden Methode zur Erstellung von flackernden Lichtern jeden Abschnitt, um zu lernen, wie man erstellt:

  • Eine Helligkeits-NumberSequence, die die Helligkeit der Lampe im Laufe der Zeit beeinflusst.
  • Ein Loop-Dauerattribut, um die Dauer jedes flackernden Loops zu bestimmen.
  • Ein Script, das konfiguriert, wie die beiden Attribute mit dem untergeordneten MeshParts des Modells arbeiten, um das Licht der Lampe flackern zu lassen.

Importieren Sie die Beispiel-Lampe

Dieser Leitfaden verwendet eine herunterladbare .rbxm-Datei eines hochwertigen, anpassbaren Modells einer Bankerlampe, um eine Technik für flackerndes Licht zu demonstrieren. Sie können dieses Modell verwenden, um die grundlegenden Prinzipien zu verstehen und sie dann auf Ihre eigenen Modelle anzuwenden, die Sie innerhalb von Studio oder anderer Drittanbieter-Modellierungssoftware erstellen.

Um die BankersLamp .rbxm zu importieren:

  1. Klicken Sie im Explorer-Fenster mit der rechten Maustaste auf Workspace. Ein kontextbezogenes Menü wird angezeigt.

  2. Wählen Sie Insert From File… Ein Dateibrowser wird angezeigt.

  3. Wählen Sie die BankersLamp .rbxm aus und klicken Sie auf die Schaltfläche Öffnen. Das Modell wird im Ansichtsfenster angezeigt.

Erstellen Sie eine Helligkeits-NumberSequence

Eine NumberSequence ist ein Datentyp, der eine Reihe von Zahlenwerten von 0 bis 1 über die Lebensdauer einer Instanz darstellt. Dieser Datentyp ist nützlich zur Erstellung flackernder Lichter, da Sie festlegen können, wie sich die Helligkeit des Lampenlichts über ihre Lebensdauer ändern soll. Wenn Sie die Helligkeit in kurzer Abfolge von voller Intensität auf kein Licht ändern, können Sie einen Flackereffekt erzielen.

Die X-Achse einer NumberSequence repräsentiert die Zeit, und die Y-Achse repräsentiert die relative Helligkeit. Jeder Punkt am Anfang und Ende der Zahlenfolge ist ein Schlüsselpunkt, der den Wert der Eigenschaft zu diesem Zeitpunkt in der Lebensdauer der Lichthelligkeit bestimmt. Wenn Sie eine NumberSequence zum ersten Mal erstellen, ist das Diagramm eine gerade Linie und das Licht bleibt während seiner Lebensdauer mit derselben Helligkeitsintensität, aber durch das Hinzufügen und Verschieben von Schlüsselpunkt können Sie Kurven innerhalb der Sequenz erstellen und die Helligkeit der Lampe über die Zeit ändern.

Obwohl die Lampe standardmäßig keine Helligkeits-NumberSequence hat, können Sie ein Helligkeitsattribut erstellen, es auf den Typ NumberSequence setzen und dann experimentieren, indem Sie Schlüsselpunkt mit unterschiedlichen Werten hinzufügen, bis das Licht in Ihrem festgelegten Rhythmus flackert.

Um eine Helligkeits-NumberSequence zu erstellen:

  1. Fügen Sie dem Lampenmodell ein neues NumberSequence-Attribut hinzu.

    1. Wählen Sie im Explorer-Fenster das Lampenmodell aus.

    2. Navigieren Sie im Properties-Fenster zum Abschnitt Attributes und klicken Sie auf die Schaltfläche Add Attribute. Der Dialog Add Attribute wird angezeigt.

    3. Füllen Sie im Dialog Add Attribute die folgenden Felder aus:

      1. Geben Sie im Feld Name BrightnessCurve ein.

      2. Klicken Sie auf das Dropdown-Menü Type und wählen Sie NumberSequence aus.

      3. Klicken Sie auf die Schaltfläche Save. Das neue Attribut wird im Abschnitt Attributes des Properties-Fensters angezeigt.

  2. Wählen Sie die neue BrightnessCurve-Eigenschaft aus und klicken Sie dann auf die -Schaltfläche. Ein Popup für die Zahlenfolge wird angezeigt.

  3. Führen Sie eine der folgenden Aktionen aus:

    • Um die Helligkeit an einem Punkt zu ändern, klicken Sie auf einen Schlüsselpunkt und ziehen Sie ihn nach oben oder unten, oder geben Sie einen Wert im Feld Value ein.
    • Um neue Schlüsselpunkt einzufügen, klicken Sie auf einen beliebigen Punkt im Diagramm.
    • Um einen Schlüsselpunkt zu löschen, wählen Sie den Schlüsselpunkt aus und klicken Sie dann auf den Delete-Button.
    • Um einen zufälligen Bereich für die Helligkeit hinzuzufügen, klicken Sie auf einen beliebigen Schlüsselpunkt und ziehen Sie die Hüllkurvenlinien nach oben oder unten. Zu diesem Zeitpunkt erzeugt das Licht eine zufällige Helligkeit zwischen der pinken Hülle.

Beispielsweise lässt das folgende Diagramm das Licht beim ersten Flicker auf volle Helligkeit, beim zweiten Flicker auf 50% Helligkeit und beim dritten Flicker auf 75% Helligkeit flackern.

Erstellen Sie eine Loop-Dauer

Jetzt, da Sie eine NumberSequence haben, um festzulegen, wie sich die Helligkeit des Lampenlichts über seine Lebensdauer ändert, müssen Sie bestimmen, wie lange Sie möchten, dass der flackernde Loop dauert. Mit anderen Worten, diese Loop-Dauer steuert im Wesentlichen, wie oft die NumberSequence in Sekunden wiederholt wird.

Um eine Loop-Dauer zu erstellen:

  1. Fügen Sie dem Lampenmodell ein neues Loop-Dauerattribut hinzu.

    1. Wählen Sie im Explorer-Fenster das Lampenmodell aus.

    2. Navigieren Sie im Properties-Fenster zum Abschnitt Attributes und klicken Sie auf die Schaltfläche Add Attribute. Der Dialog Add Attribute wird angezeigt.

    3. Füllen Sie im Dialog Add Attribute die folgenden Felder aus:

      1. Geben Sie im Feld Name LoopDuration ein.

      2. Klicken Sie auf das Dropdown-Menü Type und wählen Sie Number aus.

      3. Klicken Sie auf die Schaltfläche Save. Das neue Attribut wird im Abschnitt Attributes des Properties-Fensters angezeigt.

  2. Setzen Sie das neue LoopDuration-Attribut auf 1. Dies sagt der NumberSequence, dass sie nach einer Sekunde wiederholt werden soll.

Skripten Sie das Lichtflackern

Jetzt, da Sie alle Elemente haben, um die Helligkeit Ihrer Lampe über ihre Lebensdauer zu steuern, ist es an der Zeit, ein Script zu erstellen, das alles zusammen bringt und das Licht flackern lässt.

Um das Lichtflackern zu skripten:

  1. Bewegen Sie im Explorer-Fenster den Mauszeiger über das Lampenmodell und klicken Sie auf die Schaltfläche ⊕. Ein kontextbezogenes Menü wird angezeigt.
  2. Fügen Sie im Menü ein Script ein.
  3. Geben Sie im neuen Skript Folgendes ein:

local RunService = game:GetService("RunService")
-- Holt sich die Attributwerte, die am Modell gesetzt sind.
local brightnessCurve = script.Parent:GetAttribute("BrightnessCurve")
local loopDuration = script.Parent:GetAttribute("LoopDuration")
-- Speichert Referenzen zu den Instanzen des Modells, die sich ändern werden.
local light = script.Parent.lamp_hood.SpotLight
local bulb = script.Parent.lightbulb
local beam = script.Parent.lamp_hood.Beam
-- Speichert die ursprünglichen Werte der Eigenschaften, die sich ändern werden.
local origLightBrightness = light.Brightness
local origBeamBrightness = beam.Brightness
local origBulbColor = bulb.Color
-- Holt sich den Wert der NumberSequence (ns) zu einer bestimmten Zeit (nsTime)
function evaluateNumberSequence(ns: NumberSequence, nsTime: number)
-- Wenn wir bei 0 oder 1 sind, gibt es den Wert des ersten oder letzten Schlüsselpunktes zurück.
if nsTime == 0 then
return ns.Keypoints[1].Value
end
if nsTime == 1 then
return ns.Keypoints[#ns.Keypoints].Value
end
-- Andernfalls durchläuft jedes sequentielle Paar von Schlüsselpunkt.
for i = 1, #ns.Keypoints - 1 do
-- Holt sich den aktuellen und den nächsten Schlüsselpunkt.
local currKp = ns.Keypoints[i]
local nextKp = ns.Keypoints[i + 1]
-- Wenn nsTime zwischen den Zeiten der Schlüsselpunkt liegt,
if nsTime >= currKp.Time and nsTime < nextKp.Time then
-- Berechnet, wo nsTime zwischen den Zeiten der Schlüsselpunkt liegt, nennt dies alpha.
local alpha = (nsTime - currKp.Time) / (nextKp.Time - currKp.Time)
-- Gibt den Wert zwischen den Punkten für nsTime unter Verwendung von alpha zurück.
return currKp.Value + (nextKp.Value - currKp.Value) * alpha
end
end
end
RunService.Heartbeat:Connect(function()
-- Löst die Zeit der NumberSequence (zwischen 0 und 1).
local t = time() / loopDuration
local numberSequenceTime = t - (t // 1)
-- Holt sich den Wert der NumberSequence zu dieser Zeit.
local brightnessValue = evaluateNumberSequence(brightnessCurve, numberSequenceTime)
-- Passt die Helligkeits- und Farbwerte basierend auf diesem Wert an.
light.Brightness = origLightBrightness * brightnessValue
beam.Brightness = origBeamBrightness * brightnessValue
bulb.Color = Color3.new(
origBulbColor.r * brightnessValue,
origBulbColor.g * brightnessValue,
origBulbColor.b * brightnessValue
)
end)

Wenn Sie Ihrer Erfahrung testen, wird die Verbindung mit dem Heartbeat-Ereignis bei jedem Frame Folgendes ausführen:

  1. Bestimmt eine Zeit (numberSequenceTime) innerhalb der brightnessCurve NumberSequence basierend auf der aktuellen Zeit.
    • Die Zeit liegt zwischen 0 und 1, da diese den Anfang und das Ende der NumberSequence darstellen.
  2. Bestimmt den Wert (brightnessValue) der brightnessCurve NumberSequence zur Zeit numberSequenceTime.
    • evaluateNumberSequence() berechnet den Wert, der mit der Zeit für jede NumberSequence verbunden ist.
    • Dieser Wert dient als relativer Helligkeitswert, der auf die Eigenschaften angewendet wird, die sich über die Zeit ändern.
  3. Ändert die Eigenschaften der Lampen, indem brightnessValue mit der Helligkeit des Lichts, der Helligkeit des Strahls und der Farbe der Glühbirne multipliziert wird.

Die Änderungen an diesen Eigenschaften über die Zeit führen zum untenstehenden Flackereffekt.

©2026 Roblox Corporation. Roblox, das Roblox-Logo und "Powering Imagination" gehören zu unseren eingetragenen und nicht eingetragenen Markenzeichen in den USA und anderen Ländern.