最新消息

欢迎来到 AIMWARE中文网

立即加入我们以访问我们的所有功能。 注册并登录后,您将能够创建主题、发布对现有主题的回复、为您的其他成员提供声誉、获得您自己的私人信使等等。 快捷而且完全免费,你还在等什么?

最新帖子

粒子特效

[Visuals] 视觉Lua 粒子特效 中文版

没有下载权限
关于:
脚本作者:startalee
原帖链接:点击右侧更多信息
作者主页:点击右侧获取帮助
搬运汉化:An
详细注释:ChatGPT Plus

脚本说明:
此脚本用于在屏幕上绘制粒子特效,特效可以调整数量以及颜色。

功能位置:
Visuals -> Other -> Extra


截图预览:
粒子.png


源代码(如不能正常下载,可复制保存):

粒子特效:
--[[
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
      _     ___  __  __ __        __ _     ____   _____                         --
     / \   |_ _||  \/  |\ \      / // \   |  _ \ | ____|    ___  _ __           --
    / _ \   | | | |\/| | \ \ /\ / // _ \  | |_) ||  _|     / __|| '_ \          --
   / ___ \  | | | |  | |  \ V  V // ___ \ |  _ < | |___  _| (__ | | | |         --
  /_/   \_\|___||_|  |_|   \_/\_//_/   \_\|_| \_\|_____|(_)\___||_| |_|         --
                                                                                --
   ____                                      _   ____              _            --
  |  _ \  ___ __      __ ___  _ __  ___   __| | | __ )  _   _     / \    _ __   --
  | |_) |/ _ \\ \ /\ / // _ \| '__|/ _ \ / _` | |  _ \ | | | |   / _ \  | '_ \  --
  |  __/| (_) |\ V  V /|  __/| |  |  __/| (_| | | |_) || |_| |  / ___ \ | | | | --
  |_|    \___/  \_/\_/  \___||_|   \___| \__,_| |____/  \__, | /_/   \_\|_| |_| --
                                                        |___/                   --
----------------------------------------------------------------------------------
------------------------本脚本为AIMWARE.cn论坛免费汉化搬运--------------------------
----------------------------------------------------------------------------------
--]]

--[[
--粒子特效(Particles) 原帖链接https://aimware.net/forum/thread/176332
--原作者:startalee 主页链接https://aimware.net/forum/user/343233
--搬运汉化:An
--详细注释:ChatGPT Plus
--]]

-- 获取 GUI 的引用,指定 Visuals -> Other -> Extra 的路径
local gui_ref = gui.Reference("Visuals", "Other", "Extra")

-- 创建一个复选框,用于控制粒子颜色是否可以修改
local lua_particle_colored = gui.Checkbox(gui_ref, "lua_particle_colored", "粒子颜色修改", true)

-- 创建一个颜色选择器,用于选择粒子的颜色
local lua_particle_color = gui.ColorPicker(lua_particle_colored, "lua_particle_color", "Particle Color", 255, 65, 50)

-- 获取屏幕的宽度和高度
local Screen_Width, Screen_Height = draw.GetScreenSize()

-- 定义一个空表格,用于存储粒子的属性
local particles = {}

-- 定义一个静态的 curtime 变量,用于控制粒子的生成间隔
local static_curtime = 0

-- 定义一个全局的 alpha 变量,用于控制粒子的透明度
local alpha = 0

-- 定义粒子的生命周期,单位为秒
local particle_lifetime = 5

-- 创建一个滑块,用于控制粒子的可见性百分比
local visibility_percentage_checkbox = gui.Slider(gui_ref, "lua_particle_visibility", "粒子数量", 50, 0, 100)

-- 定义一个函数,用于生成粒子
local function set_particles()
    if globals.CurTime() - static_curtime >= 0.05 then
        for _ = 1, 5 do
            local random_size = math.random(4, 8)
            local random_speed_x = math.random(-5, 5)
            local random_speed_y = math.random(-5, 5)
            local particle = {
                x = math.random(0, Screen_Width),
                y = math.random(0, Screen_Height),
                size = random_size,
                speed_x = random_speed_x * math.random(1, 2),
                speed_y = random_speed_y * math.random(1, 2),
                creation_time = globals.CurTime()
            }
            if math.random(100) <= visibility_percentage_checkbox:GetValue() then
                table.insert(particles, particle)
            end
        end
        static_curtime = globals.CurTime()
    end
end

-- 定义一个函数,用于绘制粒子
local function draw_particles()
    for i = #particles, 1, -1 do
        local particle = particles[i]
        if particle then
            particle.x = particle.x + particle.speed_x
            particle.y = particle.y + particle.speed_y
            if particle.x < 0 or particle.x > Screen_Width then
                particle.speed_x = -particle.speed_x
            end
            if particle.y < 0 or particle.y > Screen_Height then
                particle.speed_y = -particle.speed_y
            end
            if globals.CurTime() - particle.creation_time > particle_lifetime then
                table.remove(particles, i)
            else
                local alpha_ratio = (particle.size - 6) / 6
                alpha = math.min(math.max(alpha + (255 - alpha) * 0.05, 0), 255) * alpha_ratio
                local r, g, b = lua_particle_colored:GetValue() and lua_particle_color:GetValue() or 255, 255, 255
                draw.Color(r, g, b, alpha)
                draw.SetTexture(nil)
                local gradient_size = particle.size * 0.5
                local gradient_alpha = alpha * 0.5
                for j = 1, gradient_size do
                    draw.Color(r, g, b, gradient_alpha)
                    draw.FilledCircle(particle.x, particle.y, particle.size - j)
                    gradient_alpha = gradient_alpha * 0.9
                end
                draw.Color(r, g, b, alpha)
                draw.FilledCircle(particle.x, particle.y, particle.size * 0.3)
            end
        end
    end
end

-- 注册回调函数,用于在绘制时生成和绘制粒子
callbacks.Register("Draw", set_particles)
callbacks.Register("Draw", draw_particles)
  • 支持
反馈: lisilin
作者
An
下载
12
查看
375
首次发布
最后更新
评分
5.00 星 1 星

来自An的更多资源

最新评论

用了直接闪退
顶部 底部