目录
介绍
用模型作为存档点
准备
代码
思路
用方块作为存档点
准备
代码
思路
最后总结
用模型作为存档点
准备
现在地图中准备3个出身点,两个岩浆地。
岩浆名为"lava02" 换成其他的方块也是可以的,或者换成模型也还是可以的。
存档模型的名字如下
存档点-1 存档点-2 存档点-3
但是,当你换成模型之后,代码就不一样了。
代码
地图准备完毕,开始构建代码吧
先是查找所有存档模型
for (const e of world.querySelectorAll("*")){ //查找所有模型
if (e.id.startsWith("存档点")){ //添加符合条件判断
e.collides = true; //开启碰撞
e.fixed = true; //定住,防止玩家碰到模型之后将模型推开
e.onEntityContact(async({other})=>{ //检测但玩家碰到此模型之后就存档
if (e.position !== other.position.spawnPoint){
other.player.directMessage("存档成功") //给玩家发送提示
other.player.spawnPoint = e.position //修改玩家的出身点
}
})
}
}
现在找到所有模型之后,就要进行玩家的死亡碰撞判断了。
world.onVoxelContact(({entity,voxel})=>{
const voxelName = voxels.name(voxel) //将玩家碰到方块赋值给常量voxelName
if (voxelName == "lava02"){ //检测玩家碰到的模型是否为lava02
entity.position.copy(entity.player.spawnPoint) //将玩家移到存档点
}
})
好了,现在所有代码都写完了,现在看一下所有代码
for (const e of world.querySelectorAll("*")){ //查找所有模型
if (e.id.startsWith("存档点")){ //添加符合条件判断
e.collides = true; //开启碰撞
e.fixed = true; //定住,防止玩家碰到模型之后将模型推开
e.onEntityContact(async({other})=>{ //检测但玩家碰到此模型之后就存档
if (e.position !== other.position.spawnPoint){
other.player.directMessage("存档成功") //给玩家发送提示
entity.player.spawnPoint = e.position //修改玩家的出身点
}
})
}
}
world.onVoxelContact(({entity,voxel})=>{
const voxelName = voxels.name(voxel) //将玩家碰到方块赋值给常量voxelName
if (voxelName == "lava02"){ //检测玩家碰到的模型是否为lava02
entity.position.copy(entity.player.spawnPoint) //将玩家移到存档点
}
})
思路
接下来给大家讲解一下思路
此时有人就会有疑问,为什么我要将他存在entity.player.spawnPoint()的常量中呢?难道我就不能自己创建一个变量来存储吗?
其实原因很简单,var spawnPoint变量是全局的,是面向所有玩家的
用方块作为存档点
准备
伤害方块:lava02 存档方块:stone_wall
代码
world.onVoxelContact(({entity,voxel})=>{
const voxelName = voxels.name(voxel)
if(voxelName == "lava02"){ //判断碰到岩浆(碰到名为lava02)
entity.position.copy(entity.position.spawnPoint)//强制玩家重生 如果为真
}
else if (voxelName == "stone_wall"){
entity.position.spawnPoint = new Box3Vector3(entity.position.x,entity.position.y,entity.position.z)//将玩家的出身点设置为我们碰到名为“stone_wall”这个方块时的位置
}
})
这么样,是不是非常简单?
思路
最后总结
创建带有entity类的属性的变量,是只面向单个玩家的,而不会面向多个玩家,而没有带有entity类的属性的变量,是面向所有玩家的,所有玩家都会操控这个变量,也就是说一个创建了一个给玩家的私有变量,里面的值只有一个玩家可以拥有。