猫史档案馆


【代码分享】让水自然流动的代码

用户:一个STUB用户_6715468一个STUB用户_6715468查看:4 回复:5 评论:4 创建时间:2020-10-16T18:01:44


使用以下代码,可以让水变得非常“物理化”

代码:

var x;
var y;
var z;
world.onTick(({ tick }) => {
    for (x = 0; x <= 128; x++){    
        for (y = 0; y <= 128; y++){    
            for (z = 0; z <= 128; z++){
                if(voxels.getVoxelId(x,y,z)==voxels.id('water')&&voxels.getVoxelId(x,y-1,z)==voxels.id('air')){
                    voxels.setVoxel(x,y-1,z,voxels.id('water'));
                }
                if(voxels.getVoxelId(x,y,z)==voxels.id('water')&&voxels.getVoxelId(x-1,y,z)==voxels.id('air')){
                    voxels.setVoxel(x-1,y,z,voxels.id('water'));
                }
                if(voxels.getVoxelId(x,y,z)==voxels.id('water')&&voxels.getVoxelId(x+1,y,z)==voxels.id('air')){
                    voxels.setVoxel(x+1,y,z,voxels.id('water'));
                }
                if(voxels.getVoxelId(x,y,z)==voxels.id('water')&&voxels.getVoxelId(x,y,z-1)==voxels.id('air')){
                    voxels.setVoxel(x,y,z-1,voxels.id('water'));
                }
                if(voxels.getVoxelId(x,y,z)==voxels.id('water')&&voxels.getVoxelId(x,y,z+1)==voxels.id('air')){
                    voxels.setVoxel(x,y,z+1,voxels.id('water'));
                }
            }
        }
    }
});

原理:

让所有的水方块往不同方向克隆

提示:

使用代码后请清除没有围住的水方块

否则后果自负

 

没事请不要随便举报啊~


回复

上一页1 页 / 共 1下一页
lon江航lon江航

emotion_编程猫_点赞

点赞0


评论


一个STUB用户_6715468一个STUB用户_6715468

纠错:

是使用代码前清除没有围住的水方块

点赞0


评论


指令者指令者

 az

点赞0


评论


阳光的流熔怪Uyt5阳光的流熔怪Uyt5

水只在底下没有方块时向四周流?还有扩大到一定规模时应当停止蔓延

点赞0


评论


一个STUB用户_6715468一个STUB用户_6715468

代码更新:

var x;
var y;
var z;
world.onTick(({ tick }) => {
if(tick%5==0){
    for (x = 0; x <= 128; x++){    
        for (y = 0; y <= 128; y++){    
            for (z = 0; z <= 128; z++){
                if(voxels.getVoxelId(x,y,z)==voxels.id('water')&&voxels.getVoxelId(x,y-1,z)==voxels.id('air')){
                    voxels.setVoxel(x,y-1,z,voxels.id('water'));
                }else if(voxels.getVoxelId(x,y,z)==voxels.id('water')&&voxels.getVoxelId(x,y-1,z)!=voxels.id('water')){
                if(voxels.getVoxelId(x,y,z)==voxels.id('water')&&voxels.getVoxelId(x-1,y,z)==voxels.id('air')){
                    voxels.setVoxel(x-1,y,z,voxels.id('water'));
                }
                if(voxels.getVoxelId(x,y,z)==voxels.id('water')&&voxels.getVoxelId(x+1,y,z)==voxels.id('air')){
                    voxels.setVoxel(x+1,y,z,voxels.id('water'));
                }
                if(voxels.getVoxelId(x,y,z)==voxels.id('water')&&voxels.getVoxelId(x,y,z-1)==voxels.id('air')){
                    voxels.setVoxel(x,y,z-1,voxels.id('water'));
                }
                if(voxels.getVoxelId(x,y,z)==voxels.id('water')&&voxels.getVoxelId(x,y,z+1)==voxels.id('air')){
                    voxels.setVoxel(x,y,z+1,voxels.id('water'));
                }}
            }
        }
    }
}
});

水碰到地面才会扩散

点赞0


评论