一、 插件基础配置
安装插件:将 Limpid_CelestialSystem.js 放入 js/plugins 目录。
参数设置 (defaultBodies):
插件内置了太阳系核心天体(太阳、月球、八大行星)。
每个天体包含:mass(质量)、radius(半径)、x(轨道距离 AU)、vy(轨道速度标量)、obliquity(轴倾角)。
物理规则:插件基于 N-Body 模拟,月球会绕地球转,地球绕太阳转。
-----------------------------------------------------------------------------
二、 插件指令 (Plugin Commands)
在事件中使用“插件指令”来控制模拟器:
1. 呼出观测界面 (openSkyScene)
用途:打开实时星空地图。
内容:显示当前天体在天空中的位置、方位角、高度角,以及当前地点的光照和温度。
2. 设置观测点 (setObserver)
参数:
bodyName: 观测者所在的星球(如:地球)。
lat / lon: 纬度和经度。
效果:纬度会直接影响不同天体在天空中的高度(例如在北极点,极星永远在头顶)。
3. 设置时间流速 (setSpeed)
参数:speed (默认 60)。
效果:每秒钟流逝的游戏分钟数。若想实现实时系统,设为 1;若想让昼夜交替变快,设为 60 或更高。
-----------------------------------------------------------------------------
三、 战斗系统接入 (伤害公式)
插件定义了全局函数 celestialAlt('天体名称'),返回值为 0.0 到 1.0。
1.0:该天体处于玩家正上方(能量最强)。
0.0:该天体在地平线下(不可见)。
月亮之力 (a.mat * 4) * (1 + celestialAlt('月球')) 月亮越高伤害越高,最高 2 倍。
烈阳风暴 (a.mat * 10) * celestialAlt('太阳') 纯日光技能。晚上的伤害为 0。
木星加持 a.atk + (a.mat * celestialAlt('木星')) 根据木星高度提供额外的魔法伤害。
四、 脚本 (Script) 调用指南
如果你在“条件分支 -> 脚本”或“并列处理”中使用,请参考以下代码:
RUBY 代码 - // 获取太阳当前高度
- let sunAlt = celestialAlt('太阳');
- // 获取当前温度
- let temp = CelestialManager.getTemperature();
- // 获取当前光照 (W/m²)
- let lux = CelestialManager.getInsolation();
复制代码
自动昼夜色调平滑过渡
RUBY 代码 - // 计算强度 (0.0 - 1.0)
- let intensity = Math.max(0, celestialAlt('太阳'));
- // 映射色调:[红, 绿, 蓝, 灰]
- // 白天为 [0, 0, 0, 0],夜晚为 [-120, -120, -40, 100]
- let r = -120 * (1 - intensity);
- let g = -120 * (1 - intensity);
- let b = -40 * (1 - intensity);
- let gray = 100 * (1 - intensity);
- $gameScreen.startTint([r, g, b, gray], 60);
复制代码
本帖来自P1论坛作者清澈淌漾,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址: https://rpg.blue/forum.php?mod=viewthread&tid=498866 若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。 |