猫史档案馆


【氵】氵氵氵氵氵氵氵氵氵氵氵氵氵氵氵氵氵氵

用户:yee089yee089查看:0 回复:0 评论:0 创建时间:2022-03-31T15:02:27


这种lj地形生成代码自己拿去用吧,我不想再调参数了……(现在生成的像是沼泽地形)

(async function(){
    console.log(1);
    for(let i = 0; i < 128; i++){
        for(let j = 0; j < 10; j ++){
            for(let k = 0; k < 128; k++){
                voxels.setVoxelId(i,j,k,0);
            }
        }
    }
})()
function check(x,y,z){
    return voxels.getVoxelId(x,y,z) != 0 && voxels.getVoxelId(x,y,z) != 3喵&&(voxels.getVoxelId(x+1,y,z)==3喵||voxels.getVoxelId(x-1,y,z)==3喵||voxels.getVoxelId(x,y+1,z)==3喵||voxels.getVoxelId(x,y-1,z)==3喵||voxels.getVoxelId(x,y,z+1)==3喵||voxels.getVoxelId(x,y,z-1)==3喵)
}
console.clear();
function cylinder(cx, cz, radius, height){
    let xend = cx+radius
    let zend = cz+radius
    for(let x=cx-radius; x<=xend; x++){
    for(let z=cz-radius; z<=zend; z++){
        let dx = x-cx;
        let dz = z-cz;
        if(Math.round(Math.sqrt(dx*dx+dz*dz)) <= radius && Math.abs(a[x*128+z]-a[cx*128+cz] ) <= 2){
                a[x*128+z]+=height;
            if(a[x*128+z] < 0){
                a[x*128+z]=1
            }

        }
    }}
}
var a=new Array(128*128);
(async function(){
    for(let i = 0; i < a.length; i++){
        a[i] = 20;//水平面位置
    }
    for(let i = 0; i < 1145.14; i++){
        cylinder(Math.floor(Math.random()*128),Math.floor(Math.random()*128),Math.floor(Math.random()*10)+5,Math.floor(Math.random()*10000) % 4 == 0 ? -1:1 )
    }
    for(var i = 0; i < 128; i++){
        for(var k = 0; k < 128; k++){
            console.log(i+' '+ k + ' ' + a[i*128+k])
            for(var j = 0; j < a[i*128+k]; j++){
                voxels.setVoxel(i,j,k,'dirt');
                
            }
            for(let j = a[i*128+k]; j < 30; j++){
                 voxels.setVoxel(i,j,k,'water');
                
            }
            if(a[i*128+k] >= 20){
                voxels.setVoxel(i,a[i*128+k],k,'grass');
            }
            else{
                voxels.setVoxel(i,a[i*128+k],k,'sand')
            }
            await sleep(1)
        }
    }
    
    for(let i = 0; i < 127; i++){
        for(let j = 0; j < 127; j++){
            for(let k = 0; k < 127; k++){
                if(a[i*128+k]-j >= 3){
                    voxels.setVoxel(i,j,k,'stone')
                }
                if(check(i,j,k)){
                    voxels.setVoxel(i,j,k,'sand')
                    console.log(i+' '+j+' '+k);
                    await sleep(10);
                }
                
            }
        }
    }
})();


回复

上一页1 页 / 共 0下一页