用户:
Reiji查看:9 回复:3 评论:9 创建时间:2020-10-31T14:45:38
求教学
请付200个金币!
world.onPlayerJoin(({entity})=>{
entity.player.fk=['grass','dirt','white','pumpkin','water','pumpkin_lantern','spiderweb','ledfloor01','macaroon','palace_lamp'];//这里是放置的方块
entity.player.kf = 0;
entity.player.canFly=true;
entity.player.enableDamage = true;
entity.player.showHealthBar = true;
entity.player.cameraMode='fps'
})
world. onPress(({entity, button, raycast: { voxelIndex, normal} }) =>{//监听按下去
if (button == Box3ButtonType.ACTION1) { //如果是actionG,即电脑端的左键
voxels.setVoxel(voxelIndex.x, voxelIndex.y, voxelIndex.z,0);
} else if (button == Box3ButtonType.ACTION0) { //如果是action1,对应电脑端右
let v = voxelIndex.add(normal); //用点击到的方块坐标加上法向量,得到邻边方块
if(entity.player.kf==0){
voxels.setVoxel(v.x, v.y, v.z, entity.player.fk[0]); //设置邻边方块为泥土,当然还可以自
}else if(entity.player.kf==1){
voxels.setVoxel(v.x, v.y, v.z, entity.player.fk[1]);
}else if(entity.player.kf==2){
voxels.setVoxel(v.x, v.y, v.z, entity.player.fk[2]);
}else if(entity.player.kf==3){
voxels.setVoxel(v.x, v.y, v.z, entity.player.fk[3]);
}if(entity.player.kf==4){
voxels.setVoxel(v.x, v.y, v.z, entity.player.fk[4]);
}if(entity.player.kf==5){
voxels.setVoxel(v.x, v.y, v.z, entity.player.fk[5]);
}if(entity.player.kf==6){
voxels.setVoxel(v.x, v.y, v.z, entity.player.fk[6]);
}if(entity.player.kf==7){
voxels.setVoxel(v.x, v.y, v.z, entity.player.fk[7]);
}if(entity.player.kf==8){
voxels.setVoxel(v.x, v.y, v.z, entity.player.fk[8]);
}if(entity.player.kf==9){
voxels.setVoxel(v.x, v.y, v.z, entity.player.fk[9]);
}
}})
world.onPlayerJoin(({entity})=>{
entity.player.enable3DCursor=true;
})
//切换方块
// 先在场景中放置一个名称为 切换方块 的实体。
const npc = world.querySelector('#切换方块');
npc.enableInteract = true; // 允许进行互动
npc.interactRadius = 999; // 实体的互动范围
npc.interactHint = npc.id; // 互动提示框显示实体的名称
npc.interactColor = new Box3RGBColor(1,0,1); // 互动提示的文字颜色
// 玩家与实体进行交互时触发
npc.onInteract(async({entity}) => {
const result = await entity.player.dialog({
type: Box3DialogType.TEXT, // 对话框的类型,TEXT是文本框。
title: npc.id, // 对话框标题为NPC名字,表示正在说话的是NPC
type: Box3DialogType.SELECT,//对话类型是选项
type: Box3DialogType.SELECT,
title: "查理九世1出品",
titleTextColor: new Box3RGBAColor(0, 0, 0, 1),
titleBackgroundColor: new Box3RGBAColor(0.968, 0.702, 0.392, 1),
content: `${entity.player.name},请选择你切换放置的方块`,
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){
entity.player.directMessage('你取消了切换方块');
return;
}
// 判断玩家选了什么选项。
switch (result.index) {
case 0:
// 如果选择了第一项,即:'喵地'
entity.player.kf=0;
entity.player.directMessage('你切换了喵地方块');
//应该是在这里后面加修改变量值
break;
case 1:
// 如果选择了第二项,即:'泥土'
entity.player.kf=1;
entity.player.directMessage('你切换了泥土方块');
break;
case 2:
// 如果选择了第三项,即:'白色'
entity.player.kf=2;
entity.player.directMessage('你切换了白色方块');
//应该是在这里后面加修改变量值
break;
case 3:
// 如果选择了第4项,即:'白色'
entity.player.kf=3;
entity.player.directMessage('你切换了南瓜方块');
break;
case 4:
// 如果选择了第4项,即:'白色'
entity.player.kf=4;
entity.player.directMessage('你切换了水方块');
break;
case 5:
// 如果选择了第4项,即:'白色'
entity.player.kf=5;
entity.player.directMessage('你切换了南瓜灯方块');
break;
case 6:
// 如果选择了第4项,即:'白色'
entity.player.kf=6;
entity.player.directMessage('你切换了蜘蛛网方块');
break;
case 7:
// 如果选择了第4项,即:'白色'
entity.player.kf=7;
entity.player.directMessage('你切换了动态蓝灯方块');
break;
case 8:
// 如果选择了第4项,即:'白色'
entity.player.kf=8;
entity.player.directMessage('你切换了蛋糕方块');
break;
case 9:
// 如果选择了第4项,即:'白色'
entity.player.kf=9;
entity.player.directMessage('你切换了灯方块');
break;
// 注意,使用 switch 分支的时候,不要漏了后面的 break;
}
});点赞1
评论