猫史档案馆


【求助】怎么在神岛做出按钮选项效果

用户:LOUISQIILOUISQII查看:1 回复:6 评论:1 创建时间:2022-10-24T18:15:45


就比如选第一个会执行一段代码,第二个会执行第另一段代码

谁的代码对我有帮助,我就对TA的每个作品都点赞,并且关注TA


回复

上一页1 页 / 共 1下一页
我求封号我求封号

//封装成函数是因为它会被多次用到(显示玩家状态, 显示与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


评论


145a145a

用选项对话框

点赞0


评论


云游de军长渡云游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


评论