用户:
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);/*洞穴长度*/