1. TRLevel
  2. Forum
    1. Unresolved Threads
    2. Articles
  3. Members
    1. Recent Activities
    2. Users Online
    3. Team
    4. Trophy
    5. Search Members
  4. Tutorials
  5. Levels
  6. Downloads
  7. Adventskalender
    1. Kalender 2025
    2. Kalender 2024
    3. Kalender 2023
    4. Kalender 2022
    5. Kalender 2021
    6. Kalender 2020
    7. Kalender 2019
    8. Kalender 2018
    9. Kalender 2017
  8. Osterkalender
    1. Osterkalender 2026
    2. Osterkalender 2025
    3. Osterkalender 2024
    4. Osterkalender 2023
    5. Osterkalender 2022
    6. Osterkalender 2021
    7. Osterkalender 2020
    8. Osterkalender 2019
    9. Osterkalender 2018
    10. Osterkalender 2017
    11. Osterkalender 2016
  9. Mediathek
    1. Albums
    2. Video channels
  • Login
  • Register
  • Search
Tutorials
  • Everywhere
  • Articles
  • Pages
  • Forum
  • Tutorials
  • Files
  • Images
  • Videos
  • More Options
  1. TRLevel.de
  2. Lexicon

Lua Scripting Staubpartikel ParticleEmitter - Tutorial / Generator

  • l.m.
  • September 18, 2024 at 6:08 PM
  • January 6, 2025 at 3:34 PM
  • 1,377 times viewed

WICHTIG

Diese Tutorials sind beim schreiben immer mit der aktuellsten TEN/TE Version erstellt worden.
Leider kann sich von Version zu Version des Tomb Editor oder der Tomb Engine immer etwas am Code ändern. Daher können manche Teile der Tutorials veraltet sein, bzw. nicht mehr funtkionieren.
Wenn euch hier etwas auffällt, teilt uns dies BITTE mit. Damit man sich das Tutorial ansehen und überarbeiten kann. Dazu bitte einfach ein Thema im "TRLevel Forum" eröffnen.

  • 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.

    External Content youtu.be
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.


    Hier das Script:

    Code
    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, sinnvolle Werte von 1-10)
        local density = 3
        
        -- 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
        
        -- Maximale Entfernung von Lara, in der Partikel gerendert werden (1024 ist ein Square)
    	local distanceFromLara = 4096
    	
        -- ######################################################
        -- ########### Ende eigener Einstellungen ##########################
        -- ######################################################
    
        local objectsForParticles = {}
    	
    	for index, staticStartSlot in pairs(staticStartSlots) do
    		local statics = GetStaticsBySlot(staticStartSlot)
        	for index, static in pairs(statics) do
        		if CalculateDistance(static:GetPosition(), Lara:GetPosition()) < distanceFromLara then
            		table.insert(objectsForParticles, static)
            	end
        	end
        end
        
        for index, moveableStartSlot in pairs(moveableStartSlots) do
    		local moveables = GetMoveablesBySlot(moveableStartSlot)
        	for index, moveable in pairs(moveables) do
        		if CalculateDistance(moveable:GetPosition(), Lara:GetPosition()) < distanceFromLara then
            		table.insert(objectsForParticles, moveable)
            	end
        	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
    • TEN
    • LUA
    • TEN Engine

Share

  • Previous entry Soft Kollision für Statics setzen
  • Next entry Sternenhimmel und Meteoridenschauer
  • Changelog
  • PDF

Tomb Engine/Tomb Editor

Tomb Engine Version
1.6

Categories

  1. Archiv 8
    1. Tomb Editor_Alt 2
    2. TRNG_Alt 4
  2. Bauen 239
    1. Tomb Editor (TE) 107
      1. Tipps und Tricks 19
      2. SoundTool 5
      3. TombIDE 6
      4. WadTool 11
      5. NodeEditor 2
    2. Tomb Engine (TEN) 72
      1. Tipps und Tricks 17
      2. Lua Scripting 35
    3. TRNG Engine 194
      1. Scripting 4
      2. NG Center 20
      3. Allgemein 7
      4. Neue TRNG Script Befehle 66
      5. Neue TRNG Trigger 66
      6. Neue TRNG OCB Werte 9
      7. TRNG Plugins 6
      8. Tipps und Tricks 5
      9. TRNG Engine Praktische Beispiele 8
    4. NGLE (Next Generation Level Editor) 12
    5. Tomb Raider Level Editor 86
      1. Licht 4
      2. Geometrie 8
      3. Levelbau 110
      4. Tipps und Tricks 12
      5. Script 3
      6. Sounds 2
      7. Texturen 2
      8. OCB 4
      9. Sonstiges 3
      10. Dxtre3D 1
  3. Tools 21
    1. Metasequoia 5
      1. Metasequoia 3.x 2
      2. Metasequoia 4.x 3
    2. StrPix und WADMerger 4
      1. StrPix 2
      2. WADMerger 2
    3. FLEP 9
    4. Tools 2
    5. TREP 7
      1. Flipeffect Editor 1
      2. Custom Patches 2
    6. TRViewer 1
    7. Blender 0
  4. Allgemeine Tipps und Tricks 3
  5. Level Editor Lexikon 107
    1. Tomb Editor 1
    2. Tools 3
      1. TREP/FLEP 3
      2. WADMerger 0
      3. Strpix 0
    3. NGLE/LE 97
    4. Allgemein 6
      1. WAD Slots 5
    5. NGEngine 0
  1. Privacy Policy
  2. Contact
  3. Legal Notice
Lexicon 7.1.17, developed by www.viecode.com
Powered by WoltLab Suite™ 6.1.18
TRLevel.de in the WSC-Connect App on Google Play
TRLevel.de in the WSC-Connect App on the App Store
Download