如何在 Corona SDK 中正确使用粒子系统

所以我一直在努力弄清楚如何在 Corona SDK 中使用粒子系统。 我尝试了阅读有关它的信息,但只了解了_emitters_,但之后卡住了。 您如何将粒子系统和发射器连接在一起?

function NewTrail()
ParticleSystem:createParticle(
    {
        flags = { "wall" },
        x = display.contentCenterX,
        y = display.contentCenterY,
        velocityX = 100,
        velocityY = 0,
        color = { 0, 0, 1, 1 },
        lifetime = 32.0
    }
)
end
timer.performWithDelay( 100, NewTrail, -1 )

-----------------------emitter---------------------------

local emitterParams = {
    textureFileName = "particle.png",
}
local emitter = display.newEmitter( emitterParams )

好的,所以在这之后,这没有用,我想也许粒子系统和发射器是两个不同的东西,所以我尝试了这个:

local emitterParams = {
    textureFileName = "images/particle.png",
    duration = -1,
    speed = 100,
    particleLifespan = 5,
    maxParticles = 20,
    angle = 180,
    startParticleSize = 10,
    finishParticleSize = 0,
}
local Trail = display.newEmitter( emitterParams )
Trail:start()

仍然没有用。 任何输入都可以吗?

点赞
用户6541908
用户6541908

好的,我终于弄清楚了。我仍然不理解发射器,如果有人想帮忙解释一下,请务必帮忙。为了让粒子系统起作用,您必须首先启动物理引擎,即:

local physics = require( "physics" )
physics.start()

然后通过以下方式初始化粒子系统:

local testParticleSystem = physics.newParticleSystem(
  {
  filename = "images/particle.png",
  radius = 3,
  imageRadius = 4
  }
)

最后,您需要创建实际的粒子,如下所示:

local function onTimer( event )

    testParticleSystem:createParticle(
      {
         flags = "water",
         velocityX = 256,
         velocityY = 480,
         color = { 1, 0, 0.1, 1 },
         x = 0,
         y = 0,
         lifetime = 32.0
      }
    )
    end

timer.performWithDelay( 20, onTimer, 0 )
2016-07-03 01:49:35