用户:
LOUISQII查看:1 回复:6 评论:1 创建时间:2022-10-24T18:15:45
就比如选第一个会执行一段代码,第二个会执行第另一段代码
谁的代码对我有帮助,我就对TA的每个作品都点赞,并且关注TA
//封装成函数是因为它会被多次用到(显示玩家状态, 显示与NPC交互结果)
function textDialog(entity, content, title) {
return entity.player.dialog({ //弹出对话框
type: Box3DialogType.TEXT, //对话框类型为纯文本
content, //文本内容
title, //对话框左上角标题内容
})
}
world.onPlayerJoin(({ entity }) => { //玩家进入游戏时在这里初始化玩家的资产
entity.junk = 0 //废品
entity.money = 0 //钱
entity.itemList = [] //口袋里的货品
entity.player.onPress(({ button }) => { //每当有按钮被按下
if (button == Box3ButtonType.ACTION1) { //如果按钮是右键
textDialog(entity, `你身上有:\n\n${entity.money}元, ${entity.junk}个废品\n道具: [${entity.itemList}]`)
}
})
})点赞0
评论
else if (npc.id == '小卖部老板') { //如果实体名是'小卖部老板'
npc.onInteract(async ({ entity }) => { //当玩家对这个npc按E触发交互, npc问你想买哪些商品
const goodsList = ['薯片', '可乐', '糖果'] //货品列表
const priceList = [7, 5, 4] //价格列表
const selection = await entity.player.dialog({
type: Box3DialogType.SELECT, //对话框类型为选择框
content: `你有${entity.money}元, 想买点什么呢?`,
title: npc.id, //对话框左上角显示NPC名字
options: ['薯片 (7元)', '可乐 (5元)', '糖果 (4元)'], //选项
})
})
}点赞0
评论
//NPC是non-player character的简称, 表示游戏里无人控制的虚构人物
for (const npc of world.querySelectorAll('.NPC')) {
npc.enableInteract = true //允许当前npc实体触发交互
npc.interactRadius = 4.5 //交互范围
npc.interactHint = npc.id //交互提示文本显示实体名字
npc.interactColor.set(0, 1, 0) //交互提示文本颜色为绿色
if (npc.id == '学生') { //如果实体名是'学生'
npc.onInteract(async ({ entity }) => { //当玩家对这个npc按E触发交互, npc对玩家打招呼
textDialog(entity, `${entity.player.name}, 你好呀~`, npc.id)
})
}
}点赞0
评论
沙拉黄entity.player.dialog,type设置为'select'
options属性为你的选项列表
switch或者if else if分支判断
注意switch要加break点赞0
评论
云游de军长渡const npc2 = world.querySelector('#彩蛋-1');
npc2.enableInteract = true; // 允许进行互动
npc2.interactRadius = 3; // 实体的互动范围
npc2.interactHint = npc2.id; // 互动提示框显示实体的名称
npc2.interactColor = new Box3RGBColor(1,1,1); // 互动提示的文字颜色
// 玩家与实体进行交互时触发
//在这里说一下,如果要给第二个npc使用,那么这个代码里的 npc2 就要更换,换成啥随便
npc2.onInteract(async({entity}) => {
const result = await entity.player.dialog({
type: Box3DialogType.SELECT,
title: "彩蛋-1",//放一个名叫‘彩蛋-1’的npc进去
titleTextColor: new Box3RGBAColor(0, 0, 0, 1),
titleBackgroundColor: new Box3RGBAColor(0.968, 0.702, 0.392, 1),
content: `恭喜你找到了彩蛋-1,可以变色,你想要什么颜色?`,
options: ['红色', '蓝色','黄色','绿色'], // 将提供玩家选择的选项放入数组里。
contentTextColor: new Box3RGBAColor(0, 0, 0, 1),
contentBackgroundColor: new Box3RGBAColor(1, 1, 1, 1),
lookEye: entity.position.add(entity.player.facingDirection.scale(5)),
lookTarget: entity,
});
// 如果玩家点击了屏幕其他区域,取消了对话框。
if(!result || result === null){
return;
}
// 判断玩家选了什么选项。
switch (result.index) {
case 0:
//如果选择了第一项
entity.player.color.set(1, 0, 0)//变红
break;
case 1:
// 如果选择了第二项
entity.player.color.set(0, 0, 1)//变蓝
break;
case 2:
// 如果选择了第三项
entity.player.color.set(1, 1, 0)//变黄
break;
case 3:
// 如果选择了第四项
entity.player.color.set(0, 1, 0)//变绿
break;
default:
// 注意,使用 switch 分支的时候,不要漏了后面的 break;
}
});点赞0
评论