用户:
翎with珝查看:3 回复:11 评论:3 创建时间:2023-05-02T15:53:37

const start = [84, 8, 52];
let n = 48;
for (let i = 0; i <= 4; i++) {
cylinder('white', start[0], start[1] + 1, start[2] + 35, n, 1);
n = n - 1;
cylinder('red', start[0], start[1] + 1, start[2] + 35, n, 1);
n = n - 2;
};
for (var i = start[0]; i < start[0] + 160; i++) {
voxels.setVoxel(i, start[1] + 1, start[2] + 71, 'white');
voxels.setVoxel(i, start[1] + 1, start[2] + 72, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] + 73, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] + 74, 'white');
voxels.setVoxel(i, start[1] + 1, start[2] + 75, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] + 76, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] + 77, 'white');
voxels.setVoxel(i, start[1] + 1, start[2] + 78, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] + 79, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] + 80, 'white');
voxels.setVoxel(i, start[1] + 1, start[2] + 81, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] + 82, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] + 83, 'white');
};
n = 48;
for (let i = 0; i <= 4; i++) {
cylinder('white', start[0] + 105, start[1] + 1, start[2] + 35, n, 1);
n = n - 1;
cylinder('red', start[0] + 105, start[1] + 1, start[2] + 35, n, 1);
n = n - 2;
};
cylinder('grass', start[0], start[1] + 1, start[2] + 35, 35, 1);
cylinder('grass', start[0] + 105, start[1] + 1, start[2] + 35, 35, 1);
for (var i = start[0]; i < start[0] + 105; i++) {
voxels.setVoxel(i, start[1] + 1, start[2] - 13, 'white');
voxels.setVoxel(i, start[1] + 1, start[2] - 12, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] - 11, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] - 10, 'white');
voxels.setVoxel(i, start[1] + 1, start[2] - 9, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] - 8, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] - 7, 'white');
voxels.setVoxel(i, start[1] + 1, start[2] - 6, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] - 5, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] - 4, 'white');
voxels.setVoxel(i, start[1] + 1, start[2] - 3, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] - 2, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] - 1, 'white');
};
for (var i = start[0]; i < start[0] + 105; i++) {
voxels.setVoxel(i, start[1] + 1, start[2] + 71, 'white');
voxels.setVoxel(i, start[1] + 1, start[2] + 72, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] + 73, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] + 74, 'white');
voxels.setVoxel(i, start[1] + 1, start[2] + 75, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] + 76, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] + 77, 'white');
voxels.setVoxel(i, start[1] + 1, start[2] + 78, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] + 79, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] + 80, 'white');
voxels.setVoxel(i, start[1] + 1, start[2] + 81, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] + 82, 'red');
voxels.setVoxel(i, start[1] + 1, start[2] + 83, 'white');
};
for (var i = start[0]; i < start[0] + 160; i++) {
voxels.setVoxel(i, start[1] + 1, start[2] + 71, 'white');
voxels.setVoxel(i, start[1] + 1, start[2] + 74, 'white');
voxels.setVoxel(i, start[1] + 1, start[2] + 77, 'white');
voxels.setVoxel(i, start[1] + 1, start[2] + 80, 'white');
voxels.setVoxel(i, start[1] + 1, start[2] + 83, 'white');
};
for (var xx = 0; xx < 21; xx++) {
for (var z = start[2]; z <= start[2] + 70; z++) {
for (var i = 0; i < 5; i++) {
if (xx % 2) {
voxels.setVoxel(xx * 5 + i + start[0], start[1] + 1, z, 'grass');
} else {
voxels.setVoxel(xx * 5 + i + start[0], start[1] + 1, z, 'dark_grass');
};
};
};
};
for (var i = start[2]; i < start[2] + 71; i++) {
voxels.setVoxel(start[0], start[1] + 1, i, 'white');
};
for (var i = start[2]; i < start[2] + 71; i++) {
voxels.setVoxel(start[0] + 105, start[1] + 1, i, 'white');
};
for (var i = start[2] + 71; i < start[2] + 84; i++) {
voxels.setVoxel(start[0] + 160, start[1] + 1, i, 'white');
};
function cylinder(vox, cx, cy, cz, radius, height) {
let xend = cx + radius;
let yend = cy + height;
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) {
for (let y = cy; y < yend; y++) {
voxels.setVoxel(x, y, z, vox);
};
};
};
};
};
ps:
代码可以简化,但是帖主懒得简化,所以没有简化。
这个操场速建完之后比较大(
建议使用256地图,因为128装不下
(操场大小96*1*208)
注:截图右侧的字不用管(帖主听网抑云?