找回密码
 立即注册
查看: 7|回复: 0

cc库中 粒子特效合集

[复制链接]

316

主题

66

回帖

1426

积分

积分
1426
发表于 2025-6-15 00:17:57 | 显示全部楼层 |阅读模式
-- 创建主窗口
local parent = GUI:Win_Create("GMMain", 0, 0, 0, 0, false, false, true, false, false, false, 1)

-- 粒子特效容器
local currentParticle = nil

-- 获取屏幕尺寸
local screenWidth = 1024 
local screenHeight = 768  

-- 所有可用的内置粒子特效类型
local effects = {
    {name = "火焰", create = function() 
        local p = cc.ParticleFire:create()
        p:setStartColor(cc.c4f(1,0.5,0,1))
        p:setEndColor(cc.c4f(1,0,0,0))
        p:setPosition(screenWidth/2, screenHeight/2)
        p:setScale(3)  -- 放大火焰效果
        return p
    end},
    {name = "雪花", create = function() 
        local p = cc.ParticleSnow:create()
        p:setStartColor(cc.c4f(0.9,0.9,1,1))
        p:setLife(30)
        p:setPosition(screenWidth/2, screenHeight + 100)  -- 从屏幕上方开始
        p:setScale(5)  -- 放大雪花范围
        return p
    end},
    {name = "烟花", create = function() 
        local p = cc.ParticleFireworks:create()
        p:setSpeed(111)
        p:setStartColor(cc.c4f(0.9,0.9,1,1))
        p:setPosition(screenWidth/2, 1000)  -- 从屏幕下方发射
        p:setScale(5)
        return p
    end},

    {name = "爆炸", create = function() 
        local p = cc.ParticleExplosion:create()
        p:setLife(0.5)
        p:setTotalParticles(1111)  -- 增加粒子数量
        p:setPosition(screenWidth/2, screenHeight/2)
        p:setScale(1)  -- 放大爆炸范围
        return p
    end},
    {name = "银河", create = function() 
        local p = cc.ParticleGalaxy:create()
        p:setStartSize(10)  -- 增大粒子
        p:setPosition(screenWidth/2, screenHeight/2)
        p:setScale(10)
        return p
    end},
    {name = "烟雾", create = function() 
        local p = cc.ParticleSmoke:create()
        p:setLife(11)
        p:setPosition(screenWidth/2, 200)  -- 从底部升起
        p:setScale(1)
        return p
    end},
    {name = "魔法", create = function() 
        local p = cc.ParticleSun:create()
        p:setStartSize(10)  -- 增大太阳
        p:setPosition(screenWidth/2, screenHeight/2)
        p:setScale(1)
        return p
    end},
    {name = "花瓣", create = function() 
        local p = cc.ParticleFlower:create()
        p:setSpeed(50)
        p:setPosition(screenWidth/2, screenHeight - 400)  -- 从上方飘落
        p:setScale(4)
        return p
    end},
    {name = "螺旋", create = function() 
        local p = cc.ParticleSpiral:create()
        p:setLife(100)
        p:setPosition(screenWidth/2, screenHeight/2)
        p:setScale(3)
        return p
    end},
    {name = "雨", create = function() 
        local p = cc.ParticleRain:create()
        p:setLife(1.5)
        p:setPosition(screenWidth/2, screenHeight + 100)  -- 从上方落下
        p:setScale(5)  -- 全屏雨效果
        return p
    end}
}

-- 创建控制按钮(左侧单列排列)
local btnWidth = 20
for i, effect in ipairs(effects) do
    local btn = GUI:Button_Create(parent, 
        "Btn_"..i, 
        20,  -- 左侧固定位置
        0+i*20,  -- 垂直排列
        "res/public/1900000612.png" -- 按钮背景
    )

    GUI:setPosition(btn, btnWidth, 150+i*40)
    GUI:Button_setTitleText(btn, effect.name)
    GUI:Button_setTitleFontSize(btn, 16)

    -- 按钮点击事件
    GUI:addOnClickEvent(btn, function()
        -- 移除旧特效
        if currentParticle then
            currentParticle:removeFromParent()
        end

        -- 创建新特效
        currentParticle = effect.create()
        if currentParticle then
            parent:addChild(currentParticle)
            SL:print("已激活特效: "..effect.name)
        end
    end)
end


-- 默认显示第一个特效
if #effects > 0 then
    currentParticle = effects[1].create()
    parent:addChild(currentParticle)
end
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则