用户:
神岛吉吉喵查看:282 回复:203 评论:282 创建时间:2020-06-05T19:32:57
六月第一周,
代码岛3.0爆肝双更!
三大更新登场!
1. 官网升级!
box3.codemao.cn
全新界面
更清新、更快捷,
增加「热门」板块,
优先展示喵的地图和模型。
(新版网页在持续开发中,
有bug请留言给吉吉喵~)
2. 粒子特效!
大家呼唤的粒子特效来啦!
可用代码产生粒子特效,
任意调整其变化的颜色、速度、时间、方向等等
从而产生各种奇妙的特效
例如,上图的恐龙喷火
代码如下:
//本函数可以做出喷火粒子特效
//entity: 发出喷火特效的实体
//direction: Box3Vector3 喷火特效的朝向
//time: 喷火持续时间毫秒 [on, off, on, ..]
async function fireFromEntity (entity, direction, time = [1000]) {
const multiplier = 10;
const newVec = direction.mul(new Box3Vector3(multiplier, multiplier, multiplier));
const particlesOut = 500;
Object.assign(entity, {
breathsFire: true,
collides: false,
gravity: false,
fixed: true,
// 基本粒子参数
particleRate: particlesOut,//每秒产生的粒子数
particleRateSpread: 0,//每秒产生粒子数的随机变化
particleLimit: particlesOut,//粒子的总数量上限
particleLifetime: 1.5,//每个粒子平均存活时间1.5秒
particleLifetimeSpread: 0.5,//每个粒子存活时间的随机变化值
particleSize: [3, 4, 5, 8, 22],//粒子大小按时间变化的模式,可设置5个值
particleSizeSpread: 0,
particleColor: [//粒子颜色随时间变化的模式,可设5个值
new Box3RGBColor(10, 9, 2),//3个值分别代表红光、绿光、蓝光的含量,大小为0到正无穷
new Box3RGBColor(10, 0.25, 0.1),
new Box3RGBColor(10, 0.05, 0.05),
new Box3RGBColor(10, 0.05, 0.05),
new Box3RGBColor(10, 0.05, 0.05),
],
particleAcceleration: new Box3Vector3(0, 2.5, 0),
particleNoise: 8,
particleNoiseFrequency: 10,
particleVelocity: newVec,
particleDamping: 0.5,
});
// 喷火特效持续时间毫秒 [on, off, on, ..]
while (time.length > 0) {
waitTime = time.shift();
await sleep(waitTime);
if (!entity.particleRate) {
entity.particleRate = particlesOut;
} else {
entity.particleRate = 0;
}
entity.breathsFire = !entity.breathsFire;
}
}
传送门特效
代码如下:
//本函数可产生从下往上升的粒子特效
//entity是发出粒子特效的实体,可为模型或玩家
//color是粒子特效变化的颜色,可设置5个值
//time是特效持续时间,单位为毫秒
async function aura(entity, color = [
new Box3RGBColor(0.033, 1, 10), //3个值分别代表红光、绿光、蓝光的含量,大小为0到正无穷
new Box3RGBColor(10, 0.025, 10),
new Box3RGBColor(0.05, 1, 10),
new Box3RGBColor(10, 0.5, 10),
new Box3RGBColor(0.2, 1, 10)
], time=1000) {
// 设置粒子特效参数
entity.particleRate = 500;//实体每秒产生粒子的数量
entity.particleLimit = 500;//产生的粒子总数的上限
entity.particleLifetime = 0.8;//每颗粒子的存活时间,以秒为单位
entity.particleSize = [5,3,5,3,5];//粒子大小按时间变化的模式,平均分为5个阶段
entity.particleSizeSpread = 2;//粒子大小的随机变化范围
entity.particleColor = color;//随时间变化的粒子颜色,同样分为5个阶段
entity.particleAcceleration = new Box3Vector3(0, 1, 0);//粒子的加速度,是竖直向上的
entity.particleNoise = 5;//粒子运动随机偏离的大小
entity.particleNoiseFrequency = 10;//粒子随机偏离的频率
entity.particleVelocity = new Box3Vector3(0, 5, 0);//粒子的初速度
// 让粒子特效在经历时间time(ms)后停止
await sleep(time);//静待一段时间,time是输入的参数,默认值为1000毫秒
entity.particleRate = 0;//将产生粒子的数量设为0,也就是停止粒子特效
entity.particleLimit = 0;//将产生粒子上限数量设为0
}
了解粒子特效开发API详情:
(看《实体》那一章)
(为了更好呈现粒子特效,
推荐打开:画质设定>后期处理>荧光效果)
3. 代码模块!
现在支持在每个地图,
添加多个js脚本了!
这样就方便将常用的函数,
例如存档点、pvp等做成模块,
方便重复调用。
模块怎么使用呢?
和CommonJS规范一致。
就以上面两个粒子特效为例,
第一步
//新建一个叫做effects.js的脚本
//将上面两个粒子特效函数都写进去
//重要:在脚本末尾加上下面这段!!
module.exports = {
aura,//传送特效函数名称
fireFromEntity,//喷火特效函数名称
}
第二步
//在地图的主要脚本中,加上这句,就能调用啦!
//注意文件名要写对!
const effects = require('./effects.js');

你会了吗?
了解更多请搜索:
CommonJS 模块化
Q:如何将编辑器更新到最新版本?
关闭编辑器
让所有人离开
静待3分钟。
若更新失败,请将编辑器链接发给吉吉喵。
加入代码岛3.0官方内测Q喵
代码岛3.0官网:box3.codemao.cn
关于编辑器资格申请

目前暂不接收新的申请,
请等待新的通知,
或者留意新帖子的随缘赠送。
wangjunjiec????????????????????????????????????????链接进不去
https://javascript.ruanyifeng.com/nodejs/module.h
点赞0
评论