用户:
Star_Ink_sans查看:1392 回复:26 评论:40 创建时间:2022-03-15T09:14:09
Hi,这里是Star_Ink_sans~
今天给大家介绍一些跑酷常用代码~
1.跑酷基本功能
//跑酷功能
for (const e of world.querySelectorAll('*')) {//遍历所有实体
if (e.id.startsWith('存档点')) {
e.collides = true //开启碰撞
e.fixed = true //固定实体不被推移
e.meshScale = e.meshScale.scale(2) //放大零倍
e.onEntityContact(({ other }) => {
if (other.isPlayer) {
if (e.position !== other.player.spawnPoint) {
other.player.directMessage('到达新的存档点')
other.player.spawnPoint = e.position // 玩家重生点坐标设置成存档点的坐标
}
}
})
}
}
world.onPlayerJoin(({ entity }) => {
entity.onFluidEnter(() => {//当玩家掉到水里
entity.position.copy(entity.player.spawnPoint)
entity.position.y += 4
})
})
注意:1.使用时请把存档点设置成存档点-1,存档点-2,etc的形式
2.我个人不推荐使用方块存档,因为有时会出一些奇奇怪怪的bug,这里不详
2.创作者降临!
const FRIEND_PLAYER = ['Star_Ink_sans','A','B','C','.....']
world.onPlayerJoin(({ entity }) => {
if (!FRIEND_PLAYER.includes(entity.player.name)) return; // 如果玩家名称不在列表里,则跳过后续脚本。
world.say(`地图创作人员 ${entity.player.name} 降临!`)
entity.player.canFly = true;
})
注意:列表可以更改~
3.关闭玩家碰撞
world.addCollisionFilter('player','player');
4.电梯代码(@吉吉喵)
const elevator = world.querySelector('#电梯板-1') //获取电梯板实体
elevator.fixed = true //不可推移
elevator.collides = true //可碰撞
const pos = elevator.position//电梯板原本的位置
const ani = elevator.animate([
{ position: pos, duration: 1 },
{ position: pos, duration: 10 },
{ position: pos.add({ x: 0, y: 0, z: 15 }), duration: 1 },
{ position: pos.add({ x: 0, y: 0, z: 15 }), duration: 10 },
], {
duration: 15 * 16 , //播放一个循环共用时15秒(系统默认每秒16帧)
iterations: Infinity,
direction: Box3AnimationDirection.WRAP,//让动画实体从终点回到起点
})
注意:自行更改数据~
附:速建一层水~
for(let x=0; x<255; x++){
for(let z=0; z<255; z++){
voxels.setVoxel(x, 8, z, 'water')
}}
注意:1.可以用同样原理建围墙~
2.先放代码区测试,再移到控制台~
yee089方块的bug多半是在于你忘记entity.isPlayer,没有这个就不能用entity.player了
点赞0
评论
不是这个问题,神岛的方块检测有问题,照道理踩到方块S才会存档,但在边缘上蹭到一下也算存档,这就导致了会卡出一些奇怪的bug,我遇到的每个方块存档的地图几乎都有~(神岛方块检测特性)
来看另一个干货:https://shequ.codemao.cn/wiki/forum/430610
那么判断player。y坐标啊()没有什么是一发特判写不出来的,如果不够,再写一发()()
总之,方块存档很麻烦,我还是喜欢模型存档,因为这样不局限于一个小小的存档方块~
还有就是很多人喜欢一个存档点放很多存档方块,这样就会有无法避免的一直在"存档成功"
模型我也可以蹭啊()()
那就让他去吧()(),同样,特判也可以啊()()
不是,原理不一样,方块你蹭到就存档,但如果蹭到地方下面是虚空、喵方块,但它重生点记录的是你蹭到地方的坐标,这样就会导致无法继续游戏;模型蹭到,出生点记录的是存档点的位置,即使玩家蹭了,下次重生也是在模型上重生,不会有太大问题
笑死,onVoxelContect有三个参数叫做x,y,z好吧()()
建议好好看看api的参数列表
还有一个原因就是用方块太局限,模型更好看(我看到的大多数优质的跑酷用的都是模型)
那玩意我知道。。。
懒得用()()()()()()()()()
所以这世界上没有问题,你缺的只是特判()()
不过现在的模型太屮了,不好看,而且可以有简约风格的之类的()()
有一些挺好看的,我找到了一个"寒冰冷光存档点"
找得到肯定是用模型啊()()然而我请不起模型师
https://shequ.codemao.cn/community/422769
点赞0
评论
给你看个东西(最近在搞):box3.fun/e/4b865865f18f6a633834 你过不过的了目前的最后一关(难度4星)
我能说氵吗()
点赞0
评论
能,绝对能()()()()() 然后一个entity.player.kick()
$f("一剑走天下咯").player.kick()//()()()()()
()()()
看我新发的帖子(什)
链接()
Ada_tj更改列表在哪里更改?(在代码的哪里)
点赞0
评论
举个例子:const FRIEND_PLAYER = ['Ada_tj','你可以在这里放上其他合作者或管理员的名字','你可以继续添加()']
是狐狸头像的嘛?
加啦,来合作嘛?
https://box3.codemao.cn/e/d6babd27a9cba1331c04?p=5awE%2BamFqNym%2BY2CVdKbgIde%2Fpyfr0RXrMgwlpZUejA%2FXPtUXjMAVndWVzdA%3D%3D 链接~