用户:
翎with珝查看:0 回复:4 评论:0 创建时间:2024-08-01T17:34:25
const playGround = {
x: 0,
y: 9,
z: 0,
mileage: 400
};
let r = Math.ceil(playGround.mileage / 4 / Math.PI) + Math.ceil(playGround.mileage / 50) * 3;
let pos = new GameVector3(playGround.x + r, playGround.y, playGround.z + r);
for (let i = 0; i < Math.ceil(playGround.mileage / 50); i++) {
for (let n = 0; n < 3; n++) {
if (n == 0) {
cylinder('white', pos.x, pos.y, pos.z, r, 1);
cylinder('white', pos.x + Math.ceil(playGround.mileage / 4), pos.y, pos.z, r, 1);
} else {
cylinder('red', pos.x, pos.y, pos.z, r, 1);
cylinder('red', pos.x + Math.ceil(playGround.mileage / 4), pos.y, pos.z, r, 1);
};
r--;
};
};
cylinder('grass', pos.x, pos.y, pos.z, r + 1, 1);
cylinder('grass', pos.x + playGround.mileage / 4, pos.y, pos.z, r + 1, 1);
r = Math.ceil(playGround.mileage / 4 / Math.PI) + Math.ceil(playGround.mileage / 50) * 3;
for (let x = pos.x; x <= pos.x + Math.ceil(playGround.mileage / 4); x++) {
let za = playGround.z;
for (let i = 0; i < Math.ceil(playGround.mileage / 50); i++) {
for (let n = 0; n < 3; n++) {
if (n == 0) {
voxels.setVoxel(x, playGround.y, za, 'white');
} else {
voxels.setVoxel(x, playGround.y, za + 1, 'red');
voxels.setVoxel(x, playGround.y, za + 2, 'red');
};
};
za += 3;
};
};
for (let x = playGround.x; x <= playGround.x + 2 * r + playGround.mileage / 4; x++) {
let zb = 2 * r + 6;
for (let i = 0; i < Math.ceil(playGround.mileage / 50) + 2; i++) {
for (let n = 0; n < 3; n++) {
if (n == 0) {
voxels.setVoxel(x, playGround.y, zb, 'white');
} else {
if (x < r || x > r + playGround.mileage / 4) {
if (voxels.getVoxelId(x, playGround.y, zb - 1) !== voxels.id('white')) {
voxels.setVoxel(x, playGround.y, zb - 1, 'red')
};
if (voxels.getVoxelId(x, playGround.y, zb - 2) !== voxels.id('white')) {
voxels.setVoxel(x, playGround.y, zb - 2, 'red');
};
} else {
voxels.setVoxel(x, playGround.y, zb - 1, 'red');
voxels.setVoxel(x, playGround.y, zb - 2, 'red');
};
};
};
zb -= 3;
};
};
for (let x = pos.x; x <= pos.x + playGround.mileage / 4; x++) {
for (let z = pos.z - r + playGround.mileage / 50 * 3 - 1; z <= pos.z + r - playGround.mileage / 50 * 3 + 1; z++) {
voxels.setVoxel(x, playGround.y, z, 'grass');
};
};
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);
};
};
};
};
};
翎with珝const playGround = {
x: 0,//起始坐标x
y: 9,//起始坐标y
z: 0,//起始坐标z
mileage: 400//操场一圈全长
};
//256地图mileage最大为472,128暂未测试
//地图亲自测算,400米是真的点赞0
评论
AK亨利佐加DanJamesThomasn能陪陪我吗? 神奇代码岛:神岛交通·V41(codemao.cn) https://box3.codemao.cn/p/henry-du-subway
点赞0
评论