猫史档案馆


【box3】自动矿洞生成

用户:YDS尹子YDS尹子查看:2 回复:3 评论:2 创建时间:2022-01-23T07:50:44


async function buildCave(num){
    var starPos=new Box3Vector3(24+Math.random()*200,65,24+Math.random()*200);
    for(let i=62;i>0;i--){
        if(voxels.getVoxel(starPos.x,i,starPos.z)==voxels.id("grass")){
            starPos.y=i;
            break;
        }
    }
    var ang=[Math.random()*360,-15];
    for(let i=0;i<num;i++){
        await sleep(100);
        cave(4+Math.random()*1,starPos);
        if(i%5!=0){
        ang[0]+=Math.random()*50-25;
        
        if(starPos.y>15)
        ang[1]+=Math.random()*4-2;
        else{
        ang[1]+=Math.random()*4+10;
        }
        }else{
            ang[0]+=Math.random()*180-90;
            ang[1]+=Math.random()*10-5;
        }
        ang[0]%=360;

        
        var delta=new Box3Vector3(Math.sin(ang[0]*Math.PI/180),Math.sin(ang[1]*Math.PI/180),Math.cos(ang[0]*Math.PI/180)).scale(5);
        starPos.x+=delta.x;
        starPos.y+=delta.y;
        starPos.z+=delta.z;
    }
    await sleep(1000);
}
function cave(r,pos){
var block=0;
for(let i=pos.x-r;i<=pos.x+r;i++){
    for(let j=pos.z-r;j<=pos.z+r;j++){
        for(let k=pos.y-r;k<=pos.y+r;k++){   
            if(new Box3Vector3(i,k,j).distance(pos)<=r&&voxels.getVoxel(i,k+1,j)!=voxels.id("water")){
                voxels.setVoxel(i,k,j,block);
                
            }
        }
    }
}
voxels.setVoxel(pos.x,pos.y+r,pos.z,"lantern_01")/*洞穴不用装灯的话把这行去掉 */

}
buildCave(100);/*洞穴长度*/


回复

上一页1 页 / 共 1下一页
NyanCat233NyanCat233

sofa~

点赞0


评论


NyanCat233NyanCat233

哎YD喵还在?o(* ̄▽ ̄*)ブ

点赞0


评论


想不出来叫什么想不出来叫什么

尹子yyds,话说之前好像也有个矿洞()())什

 

点赞0


评论