Particles

From GiderosMobile
Revision as of 14:30, 13 July 2023 by Hgy29 (talk | contribs) (Text replacement - "<source" to "<syntaxhighlight")

Supported platforms: Platform android.pngPlatform ios.pngPlatform mac.pngPlatform pc.pngPlatform html5.pngPlatform winrt.pngPlatform win32.png
Available since: Gideros 2016.06
Inherits from: Sprite

Description

A particle system which allows to draw several identical dots or bitmaps, with varying colour and orientation.

Note: starting from Gideros 2022.5, Particles 3D was added

Example

Particles 2D <syntaxhighlight lang="lua"> -- gideros particles local particleGFX = Texture.new("gfx/yourgfx.png") local stars = Particles.new() stars:setTexture(particleGFX) stage:addChild(stars)

-- GAME LOOP function onEnterFrame(e) if (e.time // 1) % 4 == 0 then stars:addParticles({ { x=math.random(480),y=math.random(320), size=32,angle=math.random(360), color=0xff00ff,alpha=0.8, ttl=16*2, speedX=0.01,speedY=0.01,speedAngular=0.15, speedGrowth=0.9, }, { x=math.random(480),y=math.random(320), size=16,angle=math.random(360), color=0x00ffff,alpha=0.8, ttl=16*16, speedX=0.02,speedY=0.02,speedAngular=0.2, speedGrowth=-0.1, }, }) end end

stage:addEventListener(Event.ENTER_FRAME, onEnterFrame) </source>

Particles 3D <syntaxhighlight lang="lua"> -- Set up a fullscreen 3D viewport local sw,sh=application:getContentWidth(),application:getContentHeight() local view=D3.View.new(sw,sh,45,0.1,1000) stage:addChild(view) local scene=view:getScene()

-- We will embed our particles in a 3D mesh, to enable depth testing local sc=Mesh.new(true) scene:addChild(sc) -- A particle set showing a bubble, for a fountain local fountain=Particles.new(true,true) fountain:setTexture(Texture.new("Bubble.png",true)) sc:addChild(fountain) fountain:setX(0) fountain:setY(0) fountain:setZ(0)

-- Our emitter for fountain function Particles:fountain() local da=math.random()*6.28 local dh=math.cos(os:clock()/2) local dr=math.random()*.001+.008*math.sin(os:clock()/2) self:addParticles({ { x=0,y=0,z=0, size=.05,ttl=200, speedY=.025+.025*math.abs(dh),speedX=dr*math.sin(da),speedZ=dr*math.cos(da), decay=vector(1,1,1),acceleration=vector(0,-.0005,0), color=math.random(0x0, 0xffffff), } }) end

-- Look at it view:lookAt(0,4,3, 0,0,0)

-- Game loop stage:addEventListener(Event.ENTER_FRAME,function(e) for i=1,16 do fountain:fountain() end end) </source>

Methods

Particles.new creates new particles group
Particles:addParticles adds particles
Particles:clearTexture clears texture for all particles
Particles:getDeadParticles gets dead particles
Particles:getNearestParticle gets the index of the nearest particle to the given point
Particles:getParticleAcceleration gets particle acceleration
Particles:getParticleAngle gets particle angle
Particles:getParticleColor gets particle color and alpha value
Particles:getParticleDecay gets particle decay factor
Particles:getParticleExtra gets particle extra value
Particles:getParticlePosition gets particle position
Particles:getParticleSize gets particle size in pixels
Particles:getParticleSpeed gets particle speed
Particles:getParticleTag gets particle associated tag
Particles:getParticleTtl gets particle initial time to live
Particles:getParticles gets particles
Particles:isPaused tells if the Particle set is paused
Particles:removeParticles removes particles by index in table or as arguments
Particles:scaleParticles scales or resizes all particles in this sprite
Particles:setParticleAcceleration sets particle acceleration
Particles:setParticleAngle sets particle angle
Particles:setParticleColor sets particle color
Particles:setParticleDecay sets particle decay factor
Particles:setParticleExtra sets particle extra value
Particles:setParticlePosition sets particle position
Particles:setParticleSize sets particle size
Particles:setParticleSpeed sets particle speed
Particles:setParticleTag sets particle tag
Particles:setParticleTtl sets particle time to live
Particles:setPaused pauses or resumes the Particle set
Particles:setTexture sets texture to all particles

Events

Constants