box3电梯上下行代码(基于吉吉喵的上行代码)
Vicent轩
2020年11月28日 13:50

https://www.bilibili.com/video/BV1Ft4y1Y7FD?p=2​

这个是吉吉喵的教程,大家可以去看看了解一下程序的逻辑

那么吉吉喵留的作业:让电梯可以上下行,应该怎么改代码呢?

下面是我的答案:

-----------------------------------------------------------------------------------------------

const elevator = world.querySelector('#​电梯地板-1'// 获取电梯地板实体

move = 0 //用于判断电梯是否正在移动的变量

elevator.collides = true // 电梯开启碰撞检测

elevator.fixed = true // 电梯不受外力影响

world.onEntityContact(({entity, other})=>{ // 实时监测整个世界的实体碰撞事件。entity指被碰撞的实体, other则是主动撞过来的实体

    if (move == 0){ //避免重复引发事件带来的电梯鬼畜

        if (entity.id=='电梯地板-1&#​39; && other.isPlayer){ // 如果 玩家踏上了电梯

            if (elevator.position.y<=9){ // 如果电梯y低于2楼地板, 则判定玩家在1楼

                entity.velocity.y = 0.1 // 电梯持续上移

                world.say(other.player.name+' 坐电梯上楼&#​39;)

                move = 1 //设置值为1,表示电梯开始移动

            }else{

                entity.velocity.y = -0.1 // 电梯持续下移

                world.say(other.player.name+' 坐电梯下楼&#​39;)

                move = 1 //设置值为1,表示电梯开始移动

            }

        }

    }

    })

world.onTick(async()=>{ // 实时检测电梯位置, 进行检测是否到达1楼或2楼

    if (elevator.position.y>14){ // 如果电梯y坐标高于2楼的地板, 电梯到达2楼

        elevator.position.y = 14 // 复位到2楼的准确位置

        elevator.velocity.y = 0 // 电梯停止移动

        await sleep(1000) //等待1秒,避免电梯停止时玩家弹起再次与电梯发生碰撞让电梯下行

        move = 0 //设置为0,表示电梯停止移动

    }

    if (elevator.position.y<9){ // 如果电梯y坐标低于1楼的地板, 电梯到达1楼

        elevator.position.y = 9 // 复位到1楼的准确位置

        elevator.velocity.y = 0 // 电梯停止移动

        await sleep(1000) //等待1秒,避免电梯停止时玩家弹起再次与电梯发生碰撞让电梯上行

        move = 0 //设置为0,表示电梯停止移动

    }

})

-----------------------------------------------------------------------------------------------

你学会了吗?