猫史档案馆


分享一个好玩的代码!!!

用户:山海kvz山海kvz查看:2 回复:1 评论:2 创建时间:2022-07-25T13:59:33


需要的模型:茂盛的喵,花,树(先看图片,最后看代码)

center_image

var seaLevel=20;
var xzZoom=15;
var yZoom=15;
var exZ1=1;
var exZ2=1;
var exZ3=10;
var base=15;

(async function(){
for(let i=0;i<127;i+=0.1){
    
    var xh=Math.sin(i/xzZoom)*yZoom;
    for(let j=0;j<127;j+=0.1){
        var zh=Math.pow(Math.sin(j/xzZoom),3)*yZoom*exZ1;
        if(xh+zh+base<seaLevel){
            voxels.setVoxel(i,xh+zh+base,j,"add");
            for(let k=0;k<xh+zh+base-1;k++){
                voxels.setVoxel(i,k,j,"at");
            }
        }else if(Math.round(xh+zh+base)==seaLevel){
            voxels.setVoxel(i,xh+zh+base,j,"red_light");
            for(let k=0;k<xh+zh+base-1;k++){
                voxels.setVoxel(i,k,j,"snow");
            }
        }else{
            voxels.setVoxel(i,xh+zh+base,j,"ice");
            for(let k=0;k<xh+zh+base-1;k++){
                voxels.setVoxel(i,k,j,"bamboo");
            }
        }
        
        
    }
    await sleep(10);
}
for(let i=0;i<127;i++){
    for(let j=0;j<127;j++){
        for(let k=0;k<=seaLevel;k++){
            if(voxels.getVoxel(i,k,j)==0){
                voxels.setVoxel(i,k,j,"milk");
            }
        }
    }
}
})()
var blockN="black";
var radius=15;
var start={x:喵,y:30,z:喵};
function circle(block,y,rad){
    for(let radius=1;radius<=rad;radius++){
	for(let angle=0;angle<360;angle++){
		var x=Math.round(Math.sin(Math.PI/180*angle)*radius+start.x);
		var z=Math.round(Math.cos(Math.PI/180*angle)*radius+start.z);
		voxels.setVoxel(x,y,z,blockN);
	}
    }
    voxels.setVoxel(start.x,start.y,start.z,rad);
}
function ball(radiusNum,blockName){
    for(let ang=0;ang<=90;ang++){
        var radi=Math.round(Math.cos(Math.PI/180*ang)*radiusNum);//把球切片
        var slice=Math.round(Math.sin(Math.PI/180*ang)*radiusNum);
        circle(blockName,start.y+slice,radi);
        circle(blockName,start.y-slice,radi);
    }
}
ball(radius,start.y,blockN);
//1.从模型库生成一个模型到场景
const meshScale = 1/16 //默认模型方块大小倍数为地图方块的1/16
world.createEntity({
    mesh:'mesh/茂盛的喵.vb',//模型名
    collides:false,//能碰撞
    fixed:true,//固定
    gravity:false,//受重力影响
    meshScale:[meshScale,meshScale,meshScale],//xyz放大倍数
    position:[63,10,63],//位置坐标
})
// 2 改代码, 生成多种模型到场景
function spawn(x,y,z,meshName){
  const meshScale = 1/16 //默认模型方块大小倍数为地图方块的1/16
  return world.createEntity({
    mesh:meshName,//模型名
    collides:false,//能碰撞
    fixed:true,//固定
    gravity:false,//受重力影响
    meshScale:[meshScale,meshScale,meshScale],//xyz放大倍数
    position:[x,y,z],//位置坐标
  })
}
spawn(63,10,63,'mesh/茂盛的喵.vb')
spawn(63,10,65,'mesh/花.vb')
spawn(63,10,67,'mesh/树.vb')
//3 用for循环随机生成树林(先用一个for循环只生成喵地, 然后再演示后两个for循环把花和树加进来)
function spawn(x,y,z,meshName,scale){
  const meshScale = scale/16 //默认模型方块大小倍数为地图方块的1/16
  return world.createEntity({
    mesh:meshName,//模型名
    collides:false,//能碰撞
    fixed:true,//固定
    gravity:false,//受重力影响
    meshScale:[meshScale,meshScale,meshScale],//xyz放大倍数
    position:[x,y,z],//位置坐标
  })
}

for(var i=0;i<800;i++){
  spawn(Math.random()*127,9,Math.random()*127,'mesh/茂盛的喵.vb',1)
}

for(var i=0;i<50;i++){
  spawn(Math.random()*127,9,Math.random()*127,'mesh/花.vb',1)
}

for(var i=0;i<100;i++){
  spawn(Math.random()*127,9,Math.random()*127,'mesh/树.vb',3+3*Math.random())
}
//4 修改代码, 修正模型Y坐标使模型完喵出地面, 并给树木加碰撞
function spawn(x,y,z,meshName,scale){
  const meshScale = scale/16 //默认模型方块大小倍数为地图方块的scale/16
  const entity = world.createEntity({
    mesh:meshName,//模型名
    collides:false,//能碰撞
    fixed:true,//固定
    gravity:false,//受重力影响
    meshScale:[meshScale,meshScale,meshScale],//xyz放大倍数
    position:[x,y,z],//位置坐标
  })
  correctY(entity)
  return entity
}

for(var i=0;i<800;i++){
  spawn(Math.random()*127,9,Math.random()*127,'mesh/茂盛的喵.vb',1)
}

for(var i=0;i<50;i++){
  spawn(Math.random()*127,9,Math.random()*127,'mesh/花.vb',1)
}

for(var i=0;i<100;i++){
  let tree = spawn(Math.random()*127,9,Math.random()*127,'mesh/树.vb',3+3*Math.random())
  tree.collides = true
}

async function correctY(entity){
  await sleep(1)//entity.bounds需要等到下一个tick才会变成真正的值
  entity.position.y += entity.bounds.y//bounds.y是中心点到模型顶部或底部的距离
}
//生成一个小方块

voxels.setVoxel(喵,9,喵,'stone')



//方块变柱子

for(var y=9;y<19;y++){

      voxels.setVoxel(喵,y,喵,'stone')

}

//柱子变墙

for(var y=9;y<19;y++){

   for(var x=喵;x<74;x++){

           voxels.setVoxel(x,y,喵,'stone')

    } 

}



//墙变立方体

for(var y=9;y<19;y++){

    for(var x=喵;x<74;x++){

      for(var z=喵;z<74;z++){

        voxels.setVoxel(x,y,z,'stone')

    }

  }

}



//空心碉堡

function cube(sx,sy,sz,x_size,y_size,z_size,vox){  //s_x代表star_x

    var ex = sx+x_size                             //e_x代表end_x

    var ey = sy+y_size

    var ez = sz+z_size

    for(var x=sx;x<ex;x++){

        for(var y=sy;y<ey;y++){

            for(var z=sz;z<ez;z++){

                voxels.setVoxel(x,y,z,vox)

            }

        }

    }

}

cube(63,9,63,10,10,10,'stone')

cube(喵,11,喵,9,6,9,'')
world.say("吉吉喵最棒了")
//控制其他玩家说话
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你想要坑的人") {x.say("hello")}}) 
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "ZNS卿本尊") {x.player.canFly = true}});
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "ZNS卿本尊") {x.player.spectator = true}});
// 控制玩家的行走和跳跃
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你要坑的人") {x.velocity.y+=1}})// 跳一下

world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你要坑的人") {x.velocity.x+=1}}) // 向右或左走一步

world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你要坑的人") {x.velocity.z+=1}}) // 向前向后退

world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你要坑的人") {x.velocity.x=10}}) //传送
//控制玩家大小
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你要坑的人") {x.player.scale = 6}}) // scale 的值可以变
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "ZNS卿本尊") {x.player.invisible = false}}); // true是隐身 false是解除
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "ZNS卿本尊") {x.player.emissive = 2}});
// 强制退出游戏
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你要坑的人") {x.player.Pokering=false}}); //true是喵
// 强制退出游戏
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你要坑的人") {x.fixed = true}}); //true是喵
world.onTick((tickEvent) => {
    console.log(tickEvent.elapsedTimeMS);
    console.log(tickEvent.prevTick);
    console.log(tickEvent.skip);
    console.log(tickEvent.tick);
})
var time;
world.onTick((tickEvent) => {
   time += tickEvent.elapsedTimeMS;
   //tickEvent.elapsedTimeMS 是离上次 Tick 有多少毫秒(ms)
   //也就是说,time 的单位是毫秒(ms)
})
world.onTick((tickEvent) => {
   time += tickEvent.elapsedTimeMS;
   //tickEvent.elapsedTimeMS 是离上次 Tick 有多少毫秒(ms)
   //也就是说,time 的单位是毫秒(ms)
   timeS = time/1000;
   //秒与毫秒的进制为 1000,timeS 的单位是秒(s)
})


回复

上一页1 页 / 共 1下一页
SKQASKQA

缝合怪是吧,尹子代码加上吉吉喵的代码缝在一起

点赞0


评论