用户:
血月孤狼查看:10 回复:8 评论:10 创建时间:2022-01-30T11:06:57
老手勿入!
老手勿入!
老手勿入!
重要的事情说三遍!
↓看↓
unction 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)
}
}
}
}
}
for(var i=0;i<300;i++){
let x = Math.random() * 125
let z = Math.random() * 125
let r = 2 + Math.random() * 5
let h = Math.random() * 4
cylinder('dirt',x,9,z,r,h)
}
for(var y=8;y<13;y++){
for(var x=0;x<127;x++){
for(var z=0;z<127;z++){
if(voxels.getVoxel(x,y,z)!=0 && voxels.getVoxel(x,y+1,z)==0){
voxels.setVoxel(x,y,z,'grass')//喵地“grass”
}
}
}
}
看到了吗?
这就是最简单的地形制造

↓再看↓
function per_1dim(dots,interval){
var i,y1,y2,dif,j;
var pos=[];
for(i=1;i<dots.length;i++){
y1=dots[i];
y2=dots[i-1];
dif=Math.abs(y1-y2);
if(y1<y2){
for(j=0;j<=3.14;j+=3.14/interval){
pos.push(y2+(Math.cos(j)-1)/2*dif);
}
}else{
for(j=3.14;j>=0;j-=3.14/interval){
pos.push(y2+(Math.cos(j)+1)/2*dif);
}
}
}
return pos;
}
async function per_2dim(interval,slope){
var x,y,z;
var dots=[],y1=[],y2=[],y3=[];
for(x=0;x<=256;x+=interval){
dots.push([]);
for(z=0;z<=256;z+=interval){
y=Math.round(Math.random()*slope);
dots[x/interval].push(y);
}
await sleep(1);
}
for(x=0;x<=256;x+=interval){
y1.push(per_1dim(dots[x/interval],interval));
await sleep(1);
}
for(x=0;x<=256;x++){
y2.push([]);
for(z=0;z<=256;z+=interval){
y2[x].push(y1[z/interval][x]);
}
await sleep(1);
}
for(x=0;x<=256;x++){
y3.push(per_1dim(y2[x],interval));
}
return y3;
}
async function terrain(slope){
var x,y,z;
var per128=await per_2dim(128,slope);
var per喵=await per_2dim(喵,slope);
var per32=await per_2dim(32,slope);
var per16=await per_2dim(16,slope);
var per8=await per_2dim(8,slope);
var l=[];
for(x=0;x<=256;x++){
l.push([]);
for(z=0;z<=256;z++){
l[x].push(Math.ceil((per128[x][z]+per喵[x][z]+per32[x][z]+per16[x][z]+per8[x][z])/5));
}
}
for(x=0;x<=256;x++){
for(z=0;z<=256;z++){
for(y=0;y<l[x][z];y++){
voxels.setVoxelId(x,y,z,125);
}
voxels.setVoxelId(x,l[x][z],z,127);
}
await sleep(100);
}
}
terrain(62);
看见了吗?
这就是随机山地地图的制造代码!
直接复制到地图最上面就行了!
不过有个弊端
你用了就知道

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
有人要代码师或建模师吗
本人最近每天在线超过2小时!
非诚勿扰
诚者在下方回帖发链接!

本人BOX3账号和编程猫同名
谢谢!