连接两方块代码

先看效果:
效果是不是还行?)
其实代码写起来非常简单,只需要把整个问题看成求函数图像就好了)
无需多言,上代码:
文字版:
function connectVox(startPos,endPos,vox){
    var int_x = endPos.x-startPos.x;
    var int_z = endPos.z-startPos.z;
    var int_y = endPos.y-startPos.y;
   
    if(Math.abs(startPos.x-endPos.x)>=Math.abs(startPos.z-endPos.z) && Math.abs(startPos.x-endPos.x)>=Math.abs(startPos.y-endPos.y)){
        var m = int_y/int_x;
        var n = startPos.y-m*startPos.x;
        var a = int_z/int_x;
        var b = startPos.z-a*startPos.x;
        for(var x=Math.min(startPos.x,endPos.x);x<Math.max(startPos.x,endPos.x);x++){
            var z = x*a+b;
            var y = x*m+n;
            voxels.setVoxel(x,y,z,vox);
        }
    }else if(Math.abs(startPos.z-endPos.z)>Math.abs(startPos.x-endPos.x) && Math.abs(startPos.z-endPos.z)>Math.abs(startPos.y-endPos.y)){
        var m = int_y/int_z;
        var n = startPos.y-m*startPos.z;
        var a = int_x/int_z;
        var b = startPos.x-a*startPos.z;
        for(var z=Math.min(startPos.z,endPos.z);z<Math.max(startPos.z,endPos.z);z++){
            var x = z*a+b;
            var y = z*m+n;
            voxels.setVoxel(x,y,z,vox);
        }
    }else{
        var m = int_z/int_y;
        var n = startPos.z-m*startPos.y;
        var a = int_x/int_y;
        var b = startPos.x-a*startPos.y;
        for(var y=Math.min(startPos.y,endPos.y);y<Math.max(startPos.y,endPos.y);y++){
            var z = y*a+b;
            var x = y*m+n;
            voxels.setVoxel(x,y,z,vox);
        }
    }
}
connectVox(new GameVector3(10,10,10),new GameVector3(30,20,10),'light_blue_grass_all');
(代码太多实在不想写注释,自己琢磨吧)
注:new GameVector3代表这个数组是坐标
评论
神奇代码岛频道图标
神奇代码岛
5234成员
14
收藏
5
3