猫史档案馆


满满的BOX3喵干货!你要的都有了,免费拿走不用客气!

用户:ZH-Y-QZH-Y-Q查看:60 回复:42 评论:60 创建时间:2020-06-06T17:23:01


下面是本人在最近BOX3开发之路上

自己摸索出来的一些代码,

为了大家少掉坑、不掉🕳

稍稍整理了一下,

所以难免会有些差错,

欢迎您在下方留言反馈!

索引(戳一下,有超链接)

·电梯类

·火车类

·跑酷

·实体移动

·变身

·扣血回血合集

·粒子特效

 

①电梯类

1)普通电梯(无门)

STEP1 首先,在你要装电梯的地方放上一块模型(随便怎么样的都行,建议薄一点)。

center_image

STEP2  ①选中你的电梯模型,②选择第一个(i)的东西,然后来到【基本】界面。

center_image

STEP3  把【名字】改成dt,再添加一个dt的标签。

center_image

STEP4  编辑代码。进入代码编辑页面。在任意位置(当然要在最外层,最好在最前面!)插入以下代码(注释都写好啦~):

world.querySelectorAll('.dt').forEach(async(e)=>{//普通电梯代码
    var v=0.2;//电梯的速度 调这个地方就行了,不过建议速度不要超过0.5
              //不然人要会被弹飞的……
    var h=200;//电梯要运行到的高度 也只需要调这个地方
    var i=1;//这个别改它
    while(true){
        i=1;
        while(i<=h){//上行
            e.position.y+=v;
            await sleep(100);
            i++;
        }
        i=1;
        while(i<=h){//下行
            e.position.y-=v;
            await sleep(100);
            i++;
        }
    }
})

OK!大功告成!看看效果(在wonderful city):

center_image

LOOK!!!电梯上去了!

2)高级电梯(有电梯门)

STEP1   首先,和上面一样,先弄一个实体,然后选中,点击(i),进入【基本】选项,把名字和标签都改成555。

center_image

STEP2  然后在电梯的左边弄一个门的实体。选中,然后像上面弄电梯的方式一样,把名字和标签都改成门。如图:

center_image

STEP3   再到电梯顶上弄一个门。选中这个刚刚造好的门,点击【复制】。

center_image

然后你会看到这个门突然闪了一下。

STEP4   点击“移动”图标:

center_image

然后门这个实体就有很多小箭头。

按住绿色的那个箭头,往上拖。

center_image

然后拖到顶上,再用相应的方向箭头调整位置。

注意:这一次要把门挡在门口!

center_image

STEP5   编辑标签,把刚刚移动上来的门的标签编辑成门2。

center_image

STEP6   添加代码

在js文件头部或者尾部插入以下代码:

world.querySelectorAll('.555').forEach(async(e)=>{//made by ZH-Y-Q
    e.st=-1;//0在运行,-1在地面,1在上面
    e.onClick(async({entity,clicker})=>{
        var high=60;
        if(e.st==-1){
            clicker.position.set(44,10,54);
            clicker.player.directMessage('电梯上行~');
            e.st=0;
            world.querySelectorAll('.门').forEach(async(ee)=>{
              for(var j=0;j<32;j++){
                  ee.position.z-=0.1;
                  await sleep(10);
              }  
            })
            for(var i=0;i<high;i++){
                e.position.y+=0.5;
                await sleep(200);
            }
            e.st=1;
            world.querySelectorAll('.门2').forEach(async(ee)=>{
              for(var j=0;j<32;j++){
                  ee.position.z+=0.1;
                  await sleep(10);
              }  
            })
        }
        else if(e.st==0)
            e.say('请稍后……');
        else{
            clicker.position.set(44,40,54);
            clicker.player.directMessage('电梯下行~');
            e.st=0;
            world.querySelectorAll('.门2').forEach(async(ee)=>{
              for(var j=0;j<32;j++){
                  ee.position.z-=0.1;
                  await sleep(10);
              }  
            })
            for(var i=0;i<high;i++){
                e.position.y-=0.5;
                await sleep(200);
            }
            e.st=-1;
            world.querySelectorAll('.门').forEach(async(ee)=>{
              for(var j=0;j<32;j++){
                  ee.position.z+=0.1;
                  await sleep(10);
              }  
            })
        }
    })
})

高度和速度都自己调哈~

---------------------------------电梯-完结-分割线-撒花!----------------------------------------

 

 

②载人火车

STEP1   首先,你需要建造一个火车。如图所示,铺上地板、车头、车尾、车门。

center_image

自己弄几块板调整方向和大小,自己弄哈~

STEP2   然后把这些板统统命名为train,并把标签都弄成train。

center_image

STEP3   插入以下代码:

var train_run=0;//0在起点 1在运行
world.querySelectorAll('.train').forEach(async(e)=>{//ZH-Y-Q
    var v=+0.3;//速度 挑一个地方就够了
    while(true){
        if(train_run==0){
            train_run=1;
            e.say('天空公交车10秒后发车!');
        }
        await sleep(10000);
        for(var i=1;i<=120;i++){
            e.position.y+=v;
            await sleep(100);
        }
        for(var i=1;i<=220;i++){
            e.position.z-=v;
            await sleep(100);
        }
        for(var i=1;i<=320;i++){
            e.position.x-=v;
            await sleep(100);
        }
        for(var i=1;i<=120;i++){
            e.position.x-=v;
            await sleep(100);
        }
        
        for(var i=1;i<=320;i++){
            e.position.x+=v;
            await sleep(100);
        }
        for(var i=1;i<=120;i++){
            e.position.x+=v;
            await sleep(100);
        }
        for(var i=1;i<=220;i++){
            e.position.z+=v;
            await sleep(100);
        }
        for(var i=1;i<=120;i++){
            e.position.y-=v;
            await sleep(100);
        }
        train_run=0;
    }
})

然后就能坐上天空公交车啦!完美~

 

③跑酷传送点(感谢AC工作室toby)

相信大家对跑酷传送点并不陌生了,这里简要介绍一下。

1)STEP1   建立一个传送点模型。

center_image

设置参数,把标签改成以下这样子:

center_image

STEP2   添加代码:

world.querySelectorAll('.传送-浮空屋').forEach(async(e)=>{
    e.onEntityContact(async({entity,other})=>{
        if(other.isPlayer){
            other.position.set(84,42,26);//把你要传送的地点改一下!
        }
    })
})

可以了可以了。

 

2)另外还有跑酷记录点(先插入代码吧):

world.querySelectorAll('.跑酷').forEach((e)=>{
e.onEntityContact(({entity,other})=>{  //设置目标模型的碰撞事件.
if(!other.isPlayer){return} //防止非玩家实体参与检测.
other.position.set(93,52,23);
world.say(other.player.name+'开始跑酷喽~');
if(other.position.y<20){
entity.player.forceRespawn();
}
})
})

然后新建一个实体,添加一个标签为跑酷。OK。

④实体移动

1)飞机

弄一个飞机,如图,改一下标签,其它随意。

center_image

插入代码:

world.querySelectorAll('.planez-').forEach(async(e)=>{//感谢toby
    var v=0.3;//速度 挑一个地方就够了
    while(true){
      
            e.position.z-=v;
            if(e.position.z<0){
                e.position.z=128
            }
            await sleep(10)
        
       
    }
})

然后飞机就飞起来了!

 

2)吉吉喵重拳

新建一个实体,

改一下标签,其他随意。

center_image

插入代码!!!

world.querySelectorAll('.吉拳').forEach(async(e)=>{
    while(true){
        for(var i=1;i<=10;i++){
        e.position.y+=1;
        e.position.z+=1;
        e.position.x+=1;
        await sleep(100);
        }
        for(var i=1;i<=10;i++){
        e.position.y-=1;
        e.position.z-=1;
        e.position.x-=1;
        await sleep(100);
        }
    }
})
world.querySelectorAll('.吉拳').forEach((e)=>{
e.onEntityContact(({entity,other})=>{  //设置目标模型的碰撞事件.
if(!other.isPlayer){return} //防止非玩家实体参与检测.
world.say('吉吉喵超重拳!!!');
other.velocity.y+=1.5;
other.velocity.x-=1.5;

})
})

然后,“吉吉喵超重拳”!

 

3)弱 智地铁(滑稽

首先弄一个很厚的实体,放在地道里。

把标签改一下:

center_image

then,插入代码:

world.querySelectorAll('.metro').forEach(async(e)=>{
    while(true){
        e.position.z-=3;
        await sleep(100);
        if(e.position.z<=10)
            e.position.z=90;
    }
})

X,Y,Z的方向要自己调一下,不然可能会失控!

 

⑤变身

这里举一个变身战机的例子。

新建一个实体,改一下标签:

center_image

然后插入代码:

world.querySelectorAll('.planex').forEach((e)=>{
e.onEntityContact(({entity,other})=>{  //设置目标模型的碰撞事件.
if(!other.isPlayer){return} //防止非玩家实体参与检测.
other.mesh=entity.mesh;  //设置玩家的外观.
other.meshScale=entity.meshScale;  //设置玩家外观缩放比例.
other.player.invisible=true;  //如果模型比玩家小,就需要隐藏玩家的皮肤.
other.player.runSpeed=1.2;
other.player.canFly=true;
world.say(other.player.name+' 开走了战舰')
})
})

行了行了。

⑥扣血回血合集

1)蹲下回血

world.onPress(({ button, entity, position, pressed, raycast, tick }) => {
    if (button == 'crouch') {
        if (entity.hp <= 100) {
            if (entity.player.shininess < 100) {
                entity.player.shininess += 0.01;
                entity.hp += 10;
                entity.player.directMessage("你使用了绷带!");
            } else if (entity.player.shininess == 100) {
                entity.player.shininess += 0.01;
                entity.hp += 10;
                entity.player.directMessage("你使用了【最后一个】绷带!");
            } else {
                entity.player.directMessage("使用次数达到上限!");
            }

        }
        else {
            entity.player.directMessage("血量达到上限!");
        }
    }
});

2)回血点

先新建一个实体,标签为回血点,然后弄代码:

})
world.querySelectorAll('.回血点').forEach(async(e)=>{
    e.onEntityContact(({entity,other})=>{
        other.hp=100;
        e.say('恭喜'+clicker.player.name+'回血成功!');
    })
})

3)开喵增加攻击力

新建一个喵实体,标签为:tank2

代码(赠送隐形、现形代码):

world.querySelectorAll('.tank2').forEach(async(e)=>{
    e.onEntityContact(({entity,other})=>{
        other.player.directMessage('说:恢复\n来变回原形!')
        other.mesh=entity.mesh;
        other.meshScale=new Box3Vector3(1 / 16, 1 / 16, 1 / 16);
        other.meshOrientation=new Box3Quaternion(0, 180, 0, 1)
        other.player.invisible=true;
        other.player.runSpeed=2;
        other.player.walkSpeed=1;
        other.player.gongji=30;
    })
})
world.onChat(async({message,entity})=>{
    if(message=='隐形'){//NB
        entity.player.invisible=true;
    }else if(message=='现形'||message=='显形'){
        entity.player.invisible=false;
    }else if(message=='回血'){
        entity.player.hp+=1;
    }else if(message=='回满血'){
        entity.player.hp = entity.player.maxHp
    }else if(message=='恢复'){
        entity.mesh=world.mesh;
        entity.player.invisible=false;
        entity.player.runSpeed=0.4;
        entity.player.walkSpeed=0.22;
        entity.player.gongji=20;
    }
})

行了行了,散了散了。。。

 

 

 

 

 

嗯哼?还没走?……那继续吧……

⑦粒子特效(刚刚推出的)

自己去看shy大佬的教程吧!(doge


传送门-掉血特效
更好看的拖尾特效


回复

上一页1 页 / 共 2下一页
ZH-Y-QZH-Y-Q

自古沙发归楼主

点赞1


评论


ZH-Y-QZH-Y-Q

求加精啊啊啊

做了一个小时……

点赞0


评论


明亮星界_rebirth明亮星界_rebirth

图主在吗

要权限,不会毁图

 

点赞0


评论


ZH-Y-QZH-Y-Q

喵喵d

点赞0


评论


ZH-Y-QZH-Y-Q

如果您在使用过程中遇到了一些困难,

欢迎在下方留言,

我可以到您的地图里手把手教您搭建!

点赞0


评论


ZCHWill666ZCHWill666

厉害厉害!!!

点赞0


评论


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

emotion_编程猫_厉害了

点赞0


评论


ZH-Y-QZH-Y-Q

顶顶顶顶顶

点赞0


评论


阳光的流熔怪Uyt5阳光的流熔怪Uyt5

dd

点赞0


评论


QBZ_QBZ_

怎么觉得我地图里的所有东西都被你给破解了.....

点赞0


评论


JNM上官微雨JNM上官微雨

好啊好啊

点赞0


评论


ZH-Y-QZH-Y-Q

关于说话传送

world.onChat(async({message,entity})=>{
    if(message=='传送'){
        entity.position.set(100,100,100);//这里修改下xyz的坐标位置!
    }
})

点赞0


评论


ZH-Y-QZH-Y-Q

如果您在使用过程中遇到了一些困难,

欢迎在下方留言,

我可以到您的地图里手把手教您搭建!

还有一些遗漏的东西我会在评论区补上,

可以翻翻看看。

点赞0


评论


ZH-Y-QZH-Y-Q

关于隐身+随意穿墙+第一人称摄影师特效

world.onPlayerJoin(({ entity }) => {
    if(entity.player.name=='123'||entity.player.name=='编程猫'){
        entity.player.cameraMode = 'fps';
        console.log('setting camera mode:', entity.player.cameraMode);
        entity.player.spectator=true;
        entity.player.invisible=false;
    }
});

本代码在地图《横店影视城》使用。

点赞0


评论


ZH-Y-QZH-Y-Q

关于点击实体传送

1,新建一个实体,添加标签go。

center_image

2,然后插入代码:

world.querySelectorAll('.go').forEach(async(e)=>{
    while(true){
        e.onClick(async({entity,clicker})=>{
        clicker.position.set(88,43,88);
        clicker.onClick(async({clicker})=>{
            clicker.hp-=10;
        })
        entity.say('你进入了XXX,10秒后退出!');
        await sleep(10000);
        clicker.position.set(88,10,88);//这里要传送到的坐标自己改哈
    })
        e.say('点我进入XXX!');
        await sleep(60000);
    }
})

点赞0


评论


1232RvE1232RvE

https://box3create.codemao.cn/games/e4c4d2d9884d7b62376d?p=aGnkqYpfClzFkZ7ydekstBqrb9WqdqKe%2BhBDwLe93QA%2BXjkhCpLgVndWVzdA%3D%3D

点赞0


评论


ZH-Y-QZH-Y-Q

顶顶顶

点赞0


评论


退喵退喵

在吗?

点赞0


评论


退喵退喵

请问我该怎么弄?center_image

点赞0


评论


退喵退喵

拜托我太难了

点赞0


评论


wangjunjiecwangjunjiec

好棒哦!(๑•̀ㅂ•́)و✧emotion_编程猫_点赞emotion_编程猫_点赞

点赞0


评论


ZH-Y-QZH-Y-Q

点赞0


评论


BCM墨水瓶BCM墨水瓶

在吗

怎么让粒子特效跟着飞机

点赞0


评论


斯文的花卷卷sc3N斯文的花卷卷sc3N

nb

点赞0


评论


ZH-Y-QZH-Y-Q

点赞0


评论


SinoriaSinoria

喵d

点赞0


评论


小神AI小神AI

dd

点赞0


评论


月yueyue月yueyue

我感觉你在本尊的图里发的

点赞0


评论


蓝冰_E蓝冰_E

吉吉喵重权的的模型叫啥类,我找不着

点赞0


评论


xlcfxlcf

收藏

点赞0


评论