猫史档案馆


【代码岛3.0】教你做出一个起床战争(一)

用户:高贵的木叶龙A35d高贵的木叶龙A35d查看:17 回复:12 评论:17 创建时间:2021-01-16T15:25:00


起床战争可谓代码岛3.0最火的一张图了,我这个教程系列给大家教教如何模仿出一个起床战争!emotion_编程猫_加油

第一章:背包跟随

背包跟随是起床的一大特色,比那些只会放一个模型然后开互动的人强得多

要想有独自背包,得考虑无论人再多都有自己的背包对吧,所以要在API中找到创建实体的代码!

world.createEntity({
   
})

光是这个代码只能创造出一个实体,这个实体只是一个可以被查询的东西,没有外观,没有大小,没有名称

还需要在玩家进入时创建:

world.onPlayerJoin(async({entity,tick})=>{
    world.createEntity({

    })
})

那么,这个实体什么也干不了,得添加上参数

world.onPlayerJoin(async({entity,tick})=>{
    if(!entity.player.boxId){return;}//如果是游客不创建实体
    world.createEntity({
        mesh:'mesh/我的世界背包.vb',/*mesh样子,但是在这边没啥用,填实体在文件中的位置就行*/
        id:entity.player.boxId,/*id名称,设置为玩家的boxId*/
        position:entity.position,/*position位置,设置为玩家所在的位置*/
        enableInteract:true,/*enableInteract互动,设置为开启(true)*/
        interactRadius:5,/*interactRadius互动范围,设置为5格*/
    })
})

那么,这样可以吗?如果要选中所有背包,那可不好办,所以得加上一个tag(标签)

world.onPlayerJoin(async({entity,tick})=>{
    if(!entity.player.boxId){return;}//如果是游客不创建实体
    world.createEntity({
        mesh:'mesh/我的世界背包.vb',/*mesh样子,但是在这边没啥用,填实体在文件中的位置就行*/
        id:entity.player.boxId,/*id名称,设置为玩家的boxId*/
        position:entity.position,/*position位置,设置为玩家所在的位置*/
        enableInteract:true,/*enableInteract互动,设置为开启(true)*/
        interactRadius:5,/*interactRadius互动范围,设置为5格*/
    })
    world.querySelectorAll('#'+entity.player.boxId).forEach(async(b)=>{
        b.addTag('玩家背包')//添加喵g:玩家背包
        b.ps=entity//把他的主人设置为玩家
        b.meshInvisible=true;//开启隐形
        b.collides=false//关闭物理
        b.gravity=false//关闭物理
    })
})

那还不够,因为被交互时什么也不会发生emotion_doge

要加上一个被交互时的事件

        b.onInteract(async({entity:user,targetEntity})=>{
            const re=await user.player.dialog({
                type:Box3DialogType.SELECT,
                title:`背包`,
                content:'请选择:',
                options:[
                    '剑类',
                    '方块类',/*后面懒得加了*/
                ],
            })
            if(!re||re===null){return;}
             //自己用swith,懒得加
        })

最后核心来了:跟随

setInterval(() => {
    world.querySelectorAll('.玩家背包').forEach(async(b)=>{//标签派上用场
        const pl=b.ps//把pl设为他的主人
        b.position.set(b.ps.position.x,b.ps.position.y+3,b.ps.position.z)//移动
    })
},1);//每隔1ms执行一次

全部代码:

world.onPlayerJoin(async({entity})=>{
    if(entity.player.boxId===null){return;}
    //entity.enableDamage = true;
    //entity.player.Presss=0
    //entity.player.armss='加特林'
    //entity.player.cameraMode='fps';
    //entity.player.cooling=0
    world.createEntity({
        mesh:'mesh/我的世界背包.vb',
        id:entity.player.boxId,
        position:entity.position,
        enableInteract:true,
        interactRadius:5,
    })
    world.querySelectorAll('#'+entity.player.boxId).forEach(async(b)=>{
        b.addTag('玩家背包')
        b.ps=entity
        b.meshInvisible=true;
        b.collides=false
        b.gravity=false
        b.onInteract(async({entity:user,targetEntity})=>{
            const re=await user.player.dialog({
                type:Box3DialogType.SELECT,
                title:`背包`,
                content:'请选择:',
                options:[
                    '剑类',
                    '方块类',
                ],
            })
            if(!re||re===null){return;}
            //var as=arms[re.index]
            //entity.player.armss=as
            //entity.player.directMessage('成功切换到'+entity.player.armss)
        })
    })
})
setInterval(() => {
    world.querySelectorAll('.玩家背包').forEach(async(b)=>{
        const pl=b.ps
        b.position.set(b.ps.position.x,b.ps.position.y+3,b.ps.position.z)
    })
},1);


回复

上一页1 页 / 共 1下一页
GZ006GZ006

sofa

点赞0


评论


GZ006GZ006

这不相当于直接开源了吗?

点赞0


评论


奇迹队长奇迹队长

emotion_编程猫_点赞

点赞0


评论


GZ006GZ006

emotion_编程猫_点赞

点赞0


评论


高贵的木叶龙A35d高贵的木叶龙A35d

这个代码开源,随便拿,反正吃亏的不是我(传奇,你别过来啊啊啊啊)

点赞1


评论


高贵的木叶龙A35d高贵的木叶龙A35d

此代码发现BUG ,搬砖喵帮忙修了BUG,目前此代码应用于《未来战争》

点赞3


评论


传说云(已退)传说云(已退)

emotion_doge

点赞0


评论


Fliere_tammy_Fliere_tammy_

好家伙

点赞0


评论


Architect_煎饼Architect_煎饼

emotion_doge

点赞1


评论


不伤猫不伤猫

emotion_编程猫_点赞

点赞0


评论


高贵的木叶龙A35d高贵的木叶龙A35d

点赞0


评论


醉醉白凰醉醉白凰

DD

点赞0


评论