用户:
芜湖咸鱼查看:30 回复:21 评论:30 创建时间:2021-02-19T21:35:23
我相信,如果你在做一些NPC,那代码很可能会像这样
// 判断玩家掉入虚空
world.querySelectorAll("player").forEach(e=>{
if(e.position.y<0){e.hurt(Math.abs(e.position.y))}
})
// 添加NPC
world.querySelector(".皮卡丘")
world.querySelector(".留声机")
world.querySelector(".音乐盒")
world.querySelector(".喵神")
world.querySelector(".奖杯")
world.querySelector(".小天使")
// ...
如果加点其他的。。。
world.querySelector("#黑暗化的光芒翅膀-2").onClick(()=>{
world.querySelector("#黑暗化的光芒翅膀-2").say("Hello")
world.querySelector("#黑暗化的光芒翅膀-2").position.y+=1
})
// ...
很明显,重复性过高,所以一般人都会这样:
let entity = world.querySelector("#黑暗化的光芒翅膀-2")
entity.onClick(()=>{
entity.say("Hello")
entity.position.y+=1
})
// ...
但是,你一旦接收了onClick的entity参数,那么bug瞬间漫天飞。。。。。
所以,为了避免总是写到world.querySelector,我就水了几行代码,让你的代码可以像这样:
//用$$代替world.querySelectorAll
$$('.playExit').forEach(async (e) => {
e.onEntityContact(async ({ entity, other }) => {
if (other.isPlayer) {
other.position.set(210, 2, 65);
}
})
})
//$代替world.querySelector
const dw = $('#death_welcomer');
dw.enableInteract = true; // 允许进行互动
dw.interactRadius = 3; // 实体的互动范围
dw.interactColor = new Box3RGBColor(0, 1, 1); // 互动提示的文字颜色
瞬间感觉代码整洁多了有木有!
所以可以看到水代码(划掉)简写代码是多么重要![]()
我已经在很多项目都用到这个东西简写,感觉真的不错,所以建议大家都来用这个方法简写
代码仓库地址:https://github.com/alan-best/box3-share-code/blob/main/%E5%85%B6%E4%BB%96/%E5%AE%9E%E4%BD%93%E6%9F%A5%E6%89%BE%E5%99%A8%E7%AE%80%E5%86%99.js
注意事项:
- 不要用中文输入法输入$符号,不然会变成¥
- 这几行代码要放到代码文件第1行,后面才能使用
这帖子真的水(逃
BSS梅者如西/* 实体查找器简写
*
* 功能:让代码中用到`world.querySelector`的地方更加简洁
* 作者:Alan Best
* 最近更新时间:2021-2-18
* 此脚本用于控制台执行
* 此脚本在代码文件中需要放置在开头
*
* 使用方法
* 在执行此代码段后,
* 你可以用 $ 来代替 world.querySelector
* 用 $$ 代替 world.querySelectorAll
* 代码运行之后在控制台中也可以这样使用
*/
const $ = world.querySelector,$$ = world.querySelectorAll;
global.$ = world.querySelector;global.$$=world.querySelectorAll;点赞1
评论
for (const npc of world.querySelectorAll('.npc')) {
npc.enableInteract = true //允许当前npc实体触发交互
npc.interactRadius = 1280 //交互范围
if (npc.id == '控制') {
npc.onInteract(async ({ entity }) => {
const result = await entity.player.dialog({
type: Box3DialogType.INPUT,
title: "作者",
titleTextColor: new Box3RGBAColor(1, 1, 1, 1),
titleBackgroundColor: new Box3RGBAColor(0, 0, 0, 0.98),
content: `${entity.player.name},请输入地形种子码!`,
confirmText: '确定', // 确定按钮上面的文字。按下确定按钮后,提交回答。
placeholder: '请输入——', // 输入框背景上的提示文字。
contentTextColor: new Box3RGBAColor(1, 1, 1, 1),
contentBackgroundColor: new Box3RGBAColor(0, 0, 0, 0.98),
lookEye: entity.position.a喵(entity.player.facingDirection.scale(5)),
lookTarget: entity,
});
}//还要加模型名也可以
}//寒江宝贵模型代码资料(只复制了四分之一。。。)
话说吉吉喵不是发过这种代码了???(上面是寒江改编的)
点赞0
评论