猫史档案馆


【教程贴】BOX3-制作摔落伤害

用户:Star_Ink_sansStar_Ink_sans查看:948 回复:17 评论:29 创建时间:2022-03-15T11:14:49


代码如下:

//将可伤害开启
world.onPlayerJoin(({ entity }) => {
    entity.enableDamage = true;
});

//摔落伤害
world.onVoxelContact(async ({ entity, x, y, z, voxel }) => {
    if (!entity.isPlayer) return;
    let i = entity.player.fall - y
    if (entity.player.fall - y > 10) {
        entity.hurt(i * 3)
        entity.player.directMessage('你受到了' + i * 3 + '点摔落伤害,目前血量是:' + entity.hp)
    }
    entity.player.fall = y
});

//处理特殊情况:水方块
world.onFluidEnter(async({entity,voxel})=>{
        if(!entity.isPlayer){return;}
        entity.player.fall=0
    })


//这里的复活代码@吉吉喵
world.onDie(async({ entity }) => { 
    if (!entity.isPlayer) return;  

    for (let t = 1; t <= 5; t++) {
        entity.player.directMessage(`倒计时 ${String(5 - t)} 秒后复活`);
        await sleep(1000);
    }

    entity.player.forceRespawn();  
});

 


回复

上一页第 1 页 / 共 1 页下一页
Stephan轩Stephan轩

其实方块检测有缺陷的,如果你从半空中落下,而且在摔落前没有接触到任何方块,那就没有摔落伤害了

点赞1


评论

确实啊 但是这样的情况只会出生在出生时/传送时,玩家也肯定不想要一出生/传送就摔喵了

传送你可以弄到地面+2格的高度啊

有BUG,比如我在传送到空中过程中碰了一下墙壁,系统会判定我接触到了方块并摔落,然后会嗝屁,相反我只要跳下去的时候一直贴着墙就没有伤害

az我记得方块检测有xyz三个值的,我去康康

可能是官方系统里就有这个BUG,有一种跑酷就是那个很多个H形状的那个泡壳,简单来说就是一堵墙上有一个洞,洞只有1~2格所以岛3人不能站在洞里面,但是你跳起来使人物脚尖碰到洞口,只要你一直按着↑或者W他就不会掉下来,所以官方的Y检测可能有一定的问题

泡壳……………………是跑酷

这种叫卡墙跳哦,很多跑酷都有awa

欸,老兄,建议改一下代码,改成判断玩家位置开始比上一次位置低时,一个变量+1,这样被击飞(起床)也能受到摔落


小白鸡小白鸡

~~~~

点赞0


评论

要不要看另一个干货:https://shequ.codemao.cn/wiki/forum/430586


该账号已停用该账号已停用

你这个不可以叫教程贴了,可以叫个干货贴(emotion_doge)

点赞0


评论

《干货》

这玩意我在我自己的峡谷(实验代码用)地图测试了好几遍

行了,来看一下我的另一个干货:https://shequ.codemao.cn/wiki/forum/430586


yee089yee089

喵d

点赞0


评论


我爱Kitten我爱Kitten

这……bug用个axis就可以解决

点赞0


评论

小伙子看日期()

对……4个月(年)的超老帖()()()()()


Star_Ink_sansStar_Ink_sans

为啥要挖坟啊啊啊啊啊()

点赞0


评论

()

az,()()

entity,player.fall是內置函數???

关于马云和叉子两个大佬来挖坟这件事)

我為啥沒看到過?()

entity.player.fall=0忘记初始化了()哎等下不对啊()我记得这个代码我测试过)当时一点问题都没有)很神奇)可能是我导入进来的时候漏了()最后再说一句:看这帖子日期啊()

话说为啥用繁体字捏()

號玩唄()


此号已被封067此号已被封067

center_image

点赞0


评论


我爱Kitten我爱Kitten

私有属性都不定义;控制台:“我直接给你来个报错()”()))))

点赞0


评论

你个老六

?为什么我没抱错()虽然没定义但不知道为啥测试是没问题的


我爱Kitten我爱Kitten

()()()

点赞0


评论


马云编程猫马云编程猫

收藏夹里见!

点赞0


评论

捉!()


源码工厂蓝仔源码工厂蓝仔

 

entity.player.fall
//这是什么?

点赞0


评论

我用的是按离地多高算

抱歉,可能是onPlayerJoin函数里复制过来的时候没复制到()但莫名其妙的是现在这个代码也能用

还有别挖了(恼)

哈哈


源码工厂蓝仔源码工厂蓝仔

怎么在图形化里判断有没有碰到东西?

点赞0


评论


kessicekessice

好码收下

点赞0


评论


永恒跳动的红色火焰永恒跳动的红色火焰

顶上去

点赞0


评论


Initially_silenceInitially_silence

怎么没效果

点赞0


评论


SCS_user_rUu1OtmY5iSCS_user_rUu1OtmY5i

挖坟

点赞0


评论


SCS_user_teLeIed6GGSCS_user_teLeIed6GG

挖。

点赞0


评论