【神奇代码岛】给我一分钟,教你在神奇代码岛做一款跑酷游戏

【神奇代码岛】给我一分钟,教你在神奇代码岛做一款跑酷游戏做一款跑酷游戏 是很多学习编程的人一直都拥有的愿望 包括我在内 毕竟跑酷游戏本来就是一款最基础的游戏 代码师必学

大家好,欢迎来到IT知识分享网。

目录

介绍

用模型作为存档点

准备

代码

思路 

用方块作为存档点

准备

代码

思路

最后总结 


介绍

做一款跑酷游戏,是很多学习编程的人一直都拥有的愿望,包括我在内,毕竟跑酷游戏本来就是一款最基础的游戏,代码师必学。

好了,废话不多说,开始。

用模型作为存档点

准备

现在地图中准备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类的属性的变量,是面向所有玩家的,所有玩家都会操控这个变量,也就是说一个创建了一个给玩家的私有变量里面的值只有一个玩家可以拥有。 

注意:伤害方块千万别选择液体,否则程序的效果是不会正常显示出来的!

好了,这节课就到这里了,我们下节课再见!

 【神奇代码岛】给我一分钟,教你在神奇代码岛做一款跑酷游戏

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/148849.html

(0)
上一篇 2025-03-27 21:45
下一篇 2025-03-27 22:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信