Du magst alte Gebäude und wolltest schon immer Staub sehen? Dann bist du hier genau richtig. Hier ist der ultimative Staubgenerator für dich.
Hiermit kannst du Staub durch die Luft fliegen lassen. Sieht besonders toll aus, wenn Licht irgendwo durchscheint.
Platziere diese Funktion in deiner level.lua und löse sie in der OnLoop-Funktion aus.
Du kannst die Parameter wie Größe, Geschwindigkeit, Dichte, Größe und mehr anpassen. Lasse deiner Kreativität freien Lauf.
Willst du grüne Partikel erstellen die Lara beim Durchlaufen vergiften? Kein Problem, das ist anpassbar. Ändere die Farbe und die Vergiftungseinstellung, und Lara wird fortan vergiftet wenn sie durch die Partikel läuft.
Bilder bitte groß anschauen, da Staub nun mal klein ist. Wenn du aber Wollmäuse magst, kannst du die auch gerne hiermit erstellen.
Hier das Script:
LevelFuncs.OnLoop = function()
AddParticles()
end
function AddParticles()
-- ######################################################
-- ########### Start eigener Einstellungen ##############
-- ######################################################
-- Definiere deine "Static" Slots an welchen Statics die Staub-Partikel erscheinen sollen (schaue für die ID / Nummer des Slots in das WadTool), weitere mit Komma getrennt. Bitte dies nicht entfernen: locale staticStartSlots{}
-- Wenn es keine "Static" Objekte gibt, einfach das Array leer lassen:
-- local staticStartSlots= {}
local staticStartSlots = {
1
}
-- Definiere deine "Moveable" Slots an welchen Moveables die Staub-Partikel erscheinen sollen (schaue für die ID / Nummer des Slots in das WadTool), weitere mit Komma getrennt. Bitte dies nicht entfernen: locale moveableStartSlots{}
-- Wenn es keine "Moveable" Objekte gibt, einfach das Array leer lassen:
-- local moveableStartSlots= {}
local moveableStartSlots = {
1020
}
-- Definiere den Bereich, in dem die Staub-Partikel zufällig vom Objekt aus erscheinen sollen (1024 = 1 Square)
local xPosTolerance = 1024
local yPosTolerance = 1024
local zPosTolerance = 1024
-- Definiere die Toleranz der zufälligen Geschwindigkeit von Partikeln. Größere Werte beschleunigen die Staub-Partikel
local xSpeed = 2
local ySpeed = 2
local zSpeed = 2
-- Anpassen der Zufallsdichte (größere Werte erzeugen mehr Staub-Partikel pro Frame)
local density = 10
-- Sprite Index (Schaue im Wad Tool im Sprite Editor in dem DEFAULT_SPRITES Objekt nach. Da es aber eh kleine Partikel sein sollen, ist das fast egal, welches Sprite hier ausgewählt wird.)
local spriteIndex = 5
-- Lege eine zufällige Schwerkrafttoleranz fest. Größere Werte bewirken, dass die Partikel schneller steigen oder fallen
local gravityTolerance = 1
-- Lege eine zufällige Rotation fest. Größere Werte bewirken, dass die Partikel schneller rotieren.
local rotationTolerance = 1
-- Lege die Farbe fest, die die Partikel nach dem Spawnen zunächst haben sollen (0-255)
local colorFromRed = 255
local colorFromGreen = 125
local colorFromBlue = 50
-- Stelle die Farbe ein, die die Partikel am Ende haben sollen (0-255)
local colorToRed = 255
local colorToGreen = 255
local colorToBlue = 255
-- Setze den Modus / Wie die Partikel, bzw das Sprite aussehen soll
-- Schau bitte hier nach den Werten nach: https://tombengine.github.io/4%20enums/Effects.BlendID.html
-- Das Beste (für Staubartikel) meiner Meinung nach ist: ADDITIVE
local mode = TEN.Effects.BlendID.ADDITIVE
-- Zufällige Start Größe (from 1-x), 10 ist ungefähr so groß wie Laras Kopf, stelle mehr als 2 ein, wenn du echte Wollmäuse haben möchtest
local startSizeTolerance = 2
-- Zufällige End Größe (from 1-x), 10 ist ungefähr so groß wie Laras Kopf, stelle mehr als 2 ein, wenn du echte Wollmäuse haben möchtest
local endSizeTolerance = 2
-- Setze zufällige Lebenszeit der Partikel ein (1-x) (in Sekunden), Größere Werte erzeugen mit der Zeit mehr Partikel
local lifeTime = 15
-- Setze es auf "true", wenn du möchtest, dass Lara durch Berührung verletzt wird
local damage = false
-- Setze es auf "true", wenn du möchtest, dass Lara durch Berührung vergiftet wird
local poison = false
-- ######################################################
-- ########### Ende eigener Einstellungen ##########################
-- ######################################################
local objectsForParticles = {}
for index, staticStartSlot in pairs(staticStartSlots) do
local statics = GetStaticsBySlot(staticStartSlot)
for index, static in pairs(statics) do
table.insert(objectsForParticles, static)
end
end
for index, moveableStartSlot in pairs(moveableStartSlots) do
local moveables = GetMoveablesBySlot(moveableStartSlot)
for index, moveable in pairs(moveables) do
table.insert(objectsForParticles, moveable)
end
end
for index, objectForParticles in pairs(objectsForParticles) do
-- Calculate start positions
local vec3Pos = objectForParticles:GetPosition();
local xPos = vec3Pos.x
local yPos = vec3Pos.y
local zPos = vec3Pos.z
if xPosTolerance > 0 then
xPos = vec3Pos.x+math.random(xPosTolerance)-math.random(xPosTolerance)
end
if yPosTolerance > 0 then
yPos = vec3Pos.y+math.random(yPosTolerance)-math.random(yPosTolerance)
end
if zPosTolerance > 0 then
zPos = vec3Pos.z+math.random(zPosTolerance)-math.random(zPosTolerance)
end
-- Calculate Velocity
local xVelo = 0 + math.random(xSpeed) - math.random(xSpeed)
local yVelo = 0 + math.random(ySpeed) - math.random(ySpeed)
local zVelo = 0 + math.random(zSpeed) - math.random(zSpeed)
for i=1,math.random(1,density) do
EmitParticle(
Vec3(xPos, yPos, zPos), --start position
Vec3(xVelo, yVelo, zVelo), -- velocity
spriteIndex, -- spriteIndex
math.random(0-gravityTolerance, 0+gravityTolerance), -- gravity
math.random(0-rotationTolerance, 0+rotationTolerance), -- rotation
Color(colorFromRed, colorFromGreen, colorFromBlue), -- startColor
Color(colorToRed, colorToGreen, colorToBlue), -- endColor
mode, -- blendMode
math.random(startSizeTolerance), -- startSize
math.random(endSizeTolerance), -- endSize
math.random(lifeTime), -- lifetime
damage, -- damage
poison -- poison
)
end
end
end
Display More