猫史档案馆


【PRO】自定义大小操场(真实体验体测(doge)

用户:翎with珝翎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);
                };
            };
        };
    };
};


回复

上一页1 页 / 共 1下一页
翎with珝翎with珝

const playGround = {
    x: 0,//起始坐标x
    y: 9,//起始坐标y
    z: 0,//起始坐标z
    mileage: 400//操场一圈全长
};
//256地图mileage最大为472,128暂未测试
//地图亲自测算,400米是真的

点赞0


评论


DebugDynamoDebugDynamo

已经开始跑不动了()

点赞0


评论


翎with珝翎with珝

wa

点赞0


评论


AK亨利佐加DanJamesThomasAK亨利佐加DanJamesThomas

n能陪陪我吗? 神奇代码岛:神岛交通·V41(codemao.cn) https://box3.codemao.cn/p/henry-du-subway

点赞0


评论