猫史档案馆


招人啦!!!!!!!!!!!!!!!!!1

用户:悠闲的大黄鸡RAIN悠闲的大黄鸡RAIN查看:0 回复:9 评论:0 创建时间:2023-05-27T09:59:52


center_imagehttps://box3.codemao.cn/e/469befde5c2891219833?p=tcPtT%2BLqM%2BsTfBpnRSmN%2FcTBRViTjVoEgx9hatOcsfA%2FryRYYxAzY2Ng%3D%3D


回复

上一页1 页 / 共 1下一页
小小蛇射手小小蛇射手

?????

点赞0


评论


悠闲的大黄鸡RAIN悠闲的大黄鸡RAIN

.

 

点赞0


评论


悠闲的大黄鸡RAIN悠闲的大黄鸡RAIN

。。。。。

 

点赞0


评论


悠闲的大黄鸡RAIN悠闲的大黄鸡RAIN

。。

点赞0


评论


悠闲的大黄鸡RAIN悠闲的大黄鸡RAIN

。。

点赞0


评论


悠闲的大黄鸡RAIN悠闲的大黄鸡RAIN

。。

点赞0


评论


悠闲的大黄鸡RAIN悠闲的大黄鸡RAIN

。。

点赞0


评论


悠闲的大黄鸡RAIN悠闲的大黄鸡RAIN

。。

点赞0


评论


悠闲的大黄鸡RAIN悠闲的大黄鸡RAIN

。。

for(var z=0;z<127;z++){
    for(var x=0;x<127;x++){
        for(var y=1;y<8;y++){
            if(voxels.getVoxel(x,y,z)==125){
                voxels.setVoxel(x,y,z,'dark_stone')
            }
        }
    }
}
/*for(var z=0;z<127;z++){
    for(var x=0;x<127;x++){
        if(voxels.getVoxel(x,y,z)==voxels.id('grass')){
            voxels.setVoxel(x,8,z,'')
        }//要不要加电梯?
    }//喵的id是什么来着 grass
}*/
for(var z=0;z<65;z++){
    for(var x=0;x<65;x++){
        if(z%3==0&&x%3==0){
            voxels.setVoxel(x,124,z,'lantern_02')
        }
        if(z==1&&x==1){
            voxels.setVoxel(x,125,z,'lantern_02')
            voxels.setVoxel(x,126,z,'lantern_02')
        }
        if(z==0||z==喵||x==0||x==喵){
            voxels.setVoxel(x,125,z,'glass')
            voxels.setVoxel(x,126,z,'lab_material_13')
        }
    }
}
for(var y=9;y<125;y++){
    if(y%5==4){
        for(var z=0;z<20;z++){
            for(var x1=0;x1<20;x1++){
                 voxels.setVoxel(x1,y,z,'air_duct')
            }
        }
    }
    for(var x=0;x<20;x++){
        voxels.setVoxel(x,y,19,'glass')
    }
}
for(var z=0;z<20;z++){
    for(var y=9;y<125;y++){
        voxels.setVoxel(0,y,z,'lab_material_14')
    }
}
for(var z=0;z<20;z++){
    for(var x=0;x<20;x++){
        voxels.setVoxel(x,8,z,'yellow_decorative_light')
    }
}
for(var x=0;x<20;x++){
    for(var y=9;y<125;y++){
        voxels.setVoxel(x,y,0,'lab_material_14')
    }
}
for(var z=0;z<20;z++){
    for(var y=9;y<125;y++){
        voxels.setVoxel(19,y,z,'lab_material_14')
    }
}
for(var z=0;z<20;z++){
    for(var y=9;y<125;y++){
        voxels.setVoxel(19,y,z,'lab_material_14')
    }
}
//voxels.setVoxel(1,8,18,'bounce_pad')
//voxels.setVoxel(2,8,18,'bounce_pad')
//voxels.setVoxel(1,8,17,'bounce_pad')
//voxels.setVoxel(2,8,17,'bounce_pad')
for(var y=9;y<125;y++){
    voxels.setVoxel(1,y,18,0)
    voxels.setVoxel(2,y,18,0)
    voxels.setVoxel(1,y,17,0)
    voxels.setVoxel(2,y,17,0)
}
for(var z=6;z<14;z++){
    for(var y=9;y<13;y++){
        voxels.setVoxel(19,y,z,'air')
    }
}
//电梯(不满意直说)
function shlt(){
    const elevator = world.querySelector('#电梯板-1') //获取电梯板实体
    elevator.fixed = true //不可推移
    elevator.collides = true //可碰撞
    const pos = elevator.position//电梯板原本的位置

    const ani = elevator.animate([// 1+5+1+2=9, 总时间被切成9份
        { position: pos, duration: 1 },// 1/9 的时间停留在地面
        { position: pos, duration: 3 },// 5/9 的时间用于地面往楼顶移动
        { position: pos.add({ x: 0, y: 116, z: 0 }), duration: 1 },// 1/9 的时间停留在楼顶
        { position: pos.add({ x: 0, y: 116, z: 0 }), duration: 3 },// 2/9 的时间从楼顶回到地面
    ], {
        duration: 16 * 40, //播放一个循环共用时9秒(系统默认每秒16帧)
        iterations: Infinity,//动画只播放无限次
        direction: Box3AnimationDirection.WRAP,//让动画实体从终点回到起点
    })
        ani.onReady(() => {//当动画开始播放时
            world.say('A栋电梯即将启动')
        })
        ani.onFinish(() => {//当动画结束播放时
            world.say('A栋电梯准备充能 ')
            shlt()//某人的小号:我写的 ds大蒟蒻(复制过来的吧()):6666666666666666666666666666666666666666666666666
        })
    world.onPress(({ entity, button }) => {
        if (button === Box3ButtonType.ACTION0) {//左键重新播放动画
            ani.play({
                duration: 16 * 40, //播放一个循环共用时9秒
                iterations: Infinity,//动画无限次循环播放
                direction: Box3AnimationDirection.WRAP,//让动画实体从终点回到起点
            })
        }
        else if (button === Box3ButtonType.ACTION1) {//右键停止动画
           ani.play({
                duration: 16 * 40, //播放一个循环共用时9秒
                iterations: Infinity,//动画无限次循环播放
                direction: Box3AnimationDirection.WRAP,//让动画实体从终点回到起点
            })
        }
    })
}
shlt()//某人的小号:也是我写的


console.clear()
const mscale = 1 / 16
const Quat = new Box3Quaternion(0, 0, 0, 1)

function buddyFollow(entity, mesh, y) {
    const buddy = world.createEntity({
        mesh,
        position: entity.position,
        meshScale: [mscale, mscale, mscale],
        gravity: false, //不受重力影响
        fixed: false, //可推移
        collides: true, //可碰撞
        friction: 0, //无摩擦力
        mass: 0.01, //非常轻
    })

    const tgPos = entity.position//僚机的目标位置
    const budPos = buddy.position//僚机的当前位置
    const facing = entity.player.facingDirection//玩家的朝向
    const ratio = 0.3//追随的灵敏度, 最好设在0.5左右, 1.0表示立即移到玩家位置

    const dist = 2 //与玩家保持的距离
    const yOffset = y //y轴位移, 保持僚机在头顶或脚下

    const ticker = world.onTick(() => {

        //要让小精灵跟在玩家背后, 需要计算xz轴的位移: 玩家朝向的反方向
        const xOffset = -facing.x * dist
        const zOffset = -facing.z * dist

        //当前位置与目标位置在xyz轴的差距
        const xDiff = tgPos.x - budPos.x
        const yDiff = tgPos.y - budPos.y
        const zDiff = tgPos.z - budPos.z

        //计算xyz方向上 当前位置向目标位置靠拢的速度
        const 喵 = (xDiff + xOffset) * ratio
        const vy = (yDiff + yOffset) * ratio
        const vz = (zDiff + zOffset) * ratio

        buddy.velocity.set(喵, vy, vz)//设置僚机速度

        if (bu喵y.velocity.sqrMag() > 0.005) {//速度要足够大, 才触发转向, 防止抖动
            bu喵y.meshOrientation = Quat.rotateY(Math.atan2(zDiff, xDiff)) //让小精灵一直面向玩家
        }
    })

    return () => {
        ticker.cancel() //关掉tick循环
        bu喵y.destroy() //移除僚机实体
    }
}

world.onPlayerJoin(({ entity }) => {
    entity.setPet = bu喵yFollow(entity, 'mesh/皮卡丘.vb', -1) //给玩家增加宠物,名称需与地图内放置的模型的名称一致
})

world.onPlayerLeave(({ entity }) => {
    //玩家离开地图时, 切记一定要关掉tick循环以及销毁小精灵实体, 否则随着人数增加, 服务器积累到一定程度就会崩溃
    entity.setPet() //清除掉宠物
})

world.onPlayerJoin(({ entity }) => {
    /**
     * 以下代码是穿戴(a喵Wearable) API结合 隐藏身体部位(skinInvisible) 功能的展示效果代码
     */
    // ----------------------------从这里开始--------------------------------------

    // API: a喵Wearable - 指在玩家某身体部位附上穿戴配件物体
    // 戴上机械翅膀
    entity.player.a喵Wearable({
        bodyPart: Box3BodyPart.TORSO,  // 机械翅膀要加到“躯干”这个部位上
        mesh: 'mesh/机械翅膀.vb', // 机械翅膀的模型位置(需要提前把模型放到地图场景里!)
        orientation: new Box3Quaternion(0, 1, 0, 0).rotateY(-Math.PI / 2), // 转到正确的方向
        scale: new Box3Vector3(0.7, 0.7, 0.7), 
        offset: new Box3Vector3(0, 0.3, -0.6),
    });
})
console.clear()
var door = world.querySelector('#科幻-门-1')  //使用代码时,此处的名称需与模型的名称保持一致

door.enableInteract = true
door.interactRadius = 2.5

door.onInteract(({ entity }) => {
    entity.player.link('https://space.bilibili.com/457121974?spm_id_from=333.337.0.0')     
    //player.link的括号里要填写要传送的地图的链接地址
})

const npc = world.querySelector('#雷电猴');
npc.enableInteract = true; // 允许进行互动
npc.interactRadius = 16;   // 实体的互动范围
npc.interactHint = npc.id; // 互动提示框显示实体的名称
npc.interactColor = new Box3RGBColor(1,0,1);  // 互动提示的文字颜色

// 玩家与实体进行交互时触发
npc.onInteract(async({entity}) => {
    const result = await entity.player.dialog({
        type: Box3DialogType.TEXT,   // 对话框的类型,TEXT是文本框。
        title: npc.id,               // 对话框标题为NPC名字,表示正在说话的是NPC
        lookEye: entity,             // 将相机放在玩家位置
        lookTarget: npc,             // 相机镜头对准NPC
        content: `加油,${entity.player.name},跑酷终点有奖励哦!`,
    });
});

点赞0


评论