猫史档案馆


每日一个建图小技巧:设置进阶版复活点!

用户:神岛吉吉喵神岛吉吉喵查看:13 回复:22 评论:13 创建时间:2021-12-16T18:42:28


center_image

 

跑酷、pvp游戏必备的小技巧来啦!

学会这三种进阶版的复活点写法

基本上就能驾驭大部分的地图玩法了~

所用到的代码如下:

// 获取场景里的复活点模型,命名为respawnPoint
// 具体模型可以用任意你喜欢的模型替换,名称也可以替换成你想要的命名
const respawnPoint = world.querySelector(`#复活点`)

// 监听方块与实体的碰撞
world.onVoxelContact(({entity, voxel})=> {
    // 将方块id转换名称
    const voxelName = voxels.name(voxel);
    // 如果方块名称是熔岩
    if (voxelName === 'lava02'){
        // 使实体受到100点伤害
        // 目的是为了直接触发实体的'onDie'事件
        //  *这里为了方便演示,将伤害值直接调到生命值(hp)的上限100点,
        //   具体调到多少点可以自行设置,只要玩家累计受到100点伤害就会触发entity的'onDie'事件
        entity.hurt(100)
    }
})

// 当玩家进入地图时
world.onPlayerJoin(({ entity }) => {
    // 首先要开启enableDamage(允许伤害),如果不设置为true的话,玩家是不会受到伤害的!
    entity.enableDamage = true
    // 给玩家的'onDie'事件添加处理的逻辑
    // 'onDie'事件会在玩家的生命值(hp)减少到0及以下时触发
    entity.onDie(() => {
        // 设置复活点的主要API: entity.player.spawnPoint

        // 1.在指定位置复活。
        // 复活点设置为世界里的'复活点模型'的坐标(position)
        // 当角色复活的时候就会出现在'复活点模型'的位置上
        // -------------------------打开下面一行注释测试效果,同时给2&3的代码注释掉---------------------------------
        entity.player.spawnPoint = respawnPoint.position.clone();
        // -------------------------打开上面一行注释测试效果,同时给2&3的代码注释掉---------------------------------

        // 2.在指定区域复活
        // const xPos = 72 + Math.random() * 5
        // const zPos = 63 + Math.random() * 5
        // entity.player.spawnPoint = new Box3Vector3(xPos, 15, zPos);


        // 3.在随机区域复活
        // const xPos = 0 + Math.random() * 126
        // const zPos = 0 + Math.random() * 126
        // entity.player.spawnPoint = new Box3Vector3(xPos, 15, zPos);

        // 设置好复活点之后,记得调用forceRespawn() API
        // 这样就可以强制玩家复活到上面设置好的位置了
        entity.player.forceRespawn()
    })
})

运行任意一种复活点的方式时

记得把其他两种方式的代码注释使其不能运行

不然会报错哦

加入神奇代码岛官方内测Q喵

官网:box3.fun

下面的二维码会扫出来什么呢?( =•ω•= )m

center_image

 


回复

上一页1 页 / 共 1下一页
我是一个冲锋手我是一个冲锋手

沙发

点赞0


评论


蔡宁进(大家再见)蔡宁进(大家再见)

我要当第二

点赞0


评论


果果1~果果1~

第三!

点赞0


评论


天下第一皮卡丘天下第一皮卡丘

(小)沙发

点赞0


评论


许pTgk许pTgk

前排

点赞0


评论


1086爱编程1086爱编程

第六

点赞0


评论


啸着玩。啸着玩。

前排

点赞0


评论


IDF哲宇MIKEIDF哲宇MIKE

还有沙发吗?

点赞0


评论


无人质问无人质问

前排

点赞0


评论


源码极客源码极客

有必要这么麻烦吗?弄好存档之后让玩家碰到某个方块就会存档点不就完了

点赞0


评论


百变喵啊百变喵啊

能拿走就拿走我

吉吉喵更新下一期,因为你有币了,长按点赞三连点亮了

点赞0


评论


全能代码师全能代码师

前排

点赞1


评论


Fliere_tammy_Fliere_tammy_

2小时,还热乎着、、、

点赞0


评论


快乐的皮卡丘A快乐的皮卡丘A

能不能出一个跑酷排行榜教程

点赞1


评论


浮生awa浮生awa

前排

点赞0


评论


A332A332

吉吉猫,我有一串代码想请教
function joinRed(entity){
entity.addTag('red')
entity.player.coler.set(1,0,0)
world.say('${entity.player.name}加入红队')
}

function joinBlue(entity){
entity.addTag('blue')
entity.player.coler.set(0,0,1)
world.say('${entity.player.name}加入蓝队')
}

world.onPlayerJoin(({entity}) => {
c喵t red = world.querySelectorAll(".red")
c喵t blue = world.querySelectorAll(".blue")
if(red.length === blue.length) {
if(Math.random() < 0.5) {
joinBlue(entity)
}
else {
joinRed(entity)

}
}
else if (red.length > blue.length {
joinBlue(entity)
}
else {
joinRed(entity)
}
})
哪里有问题?

点赞0


评论


A332A332

那是你的教程,可是有bug呀

点赞0


评论


墨染云天墨染云天

imgsrc="https://static.codemao.cn/emoji/codemao/%E7%BC%96%E7%A8%8B%E7%8C%AB_%E6%90%93%E5%A4%B4.gif"alt="emotion_编程猫_搓头"

点赞0


评论


枫原冷月枫原冷月

吉吉喵,能与我合作地图吗?我快被累死了

点赞2


评论


AP03AP03

for (const e of world.querySelectorAll('*')) {
    if (e.id.startsWith('存档点')) {
        e.collides = true 
        e.fixed = true 
        e.onEntityContact(({ other }) => { 
            if (other.isPlayer) { 
                if (e.position !== other.player.spawnPoint) { 
                    other.player.spawnPoint = e.position
                }
            }
        })
    }
}

world.onPlayerJoin(({ entity }) => {
    entity.onFluidEnter(({voxel}) => {
        if (voxel === voxels.id('lava02')) { 
            entity.position.copy(entity.player.spawnPoint)
            entity.position.y += 15
        }
    })
})

点赞0


评论


酳飞酳飞

🆗

点赞0


评论


yyds二营长yyds二营长

收藏

点赞0


评论