Lv.0
在 代码岛灵异事件(?) 中回复
有人说这是假的???可能是我忘了发过程了。。。我觉得这是一个bug,因为我先在场景里放了个叫“城墙”的文件,然后我在模型编辑器(非地图里的)给这个文件改了个名,另外造了个“城墙”,我把原模型删了,把两个模型都加到这里面,结果就这样了()
2021-09-16T19:03:25 点赞:0
在 【实验系列招人合作】实验系列招模型师 中回复
https://box3.cod喵/v/216855 https://box3.cod喵/v/216812 很久之前就做了这两个()
2021-09-28T14:48:24 点赞:0
在 做魂环最重要的不过就是举一反三() 中回复
今天突然发现个要注意的问题:玩家的变量设置我没复制下来,请大家要用的时候自己加上去(应该看得出来是哪些吧?)
2021-09-28T17:05:33 点赞:0
在 【BOX3】随机地形0.1.0 中回复
随机地形版本0.1.1
console.clear()
basic=70//地基高度,自选
Math.seed=Math.random()
Math.seededRandom = function(max,min){//随机数代码,不用管它
max=max||1;
min=min||0
Math.seed=(Math.seed*9301+49297)%233280;
var rnd=Math.seed/233280.0;
return(Math.ceil(min+rnd*(max-min)))
}
noiseP1Final = new Array(128).fill([]);//模拟地图盘
noiseP1FinalTure = new Array(128).fill([]);//最终地图盘
const PI=3.1415926535
for(k=0;k<=128;k++){
noiseP1FinalTure[k]=[]//初始化地图
}
//——————————算法主体——————————
//第一次生成(复杂程度I)
for(k=0;k<=4;k++){
noiseP1Final[k*32]=[]//初始化地图
for(i=0;i<=4;i++){
a=Math.seededRandom(30,-30)//种子取高
noiseP1Final[k*32][i*32]=a
}
for(i=0;i<4;i++){//平滑算法核心
ava=(noiseP1Final[k*32][i*32]-noiseP1Final[k*32][(i+1)*32])/2
if(ava>=0){
for(j=0;j<32;j++){
noiseP1Final[k*32][i*32+j]=noiseP1Final[k*32][i*32]+Math.floor(Math.cos(j/32*PI)*ava)-Math.floor(Math.cos(0)*ava)+1
}
}else if(ava<0){
for(j=0;j<32;j++){
noiseP1Final[k*32][i*32+j]=noiseP1Final[k*32][(i+1)*32]+Math.floor(Math.cos((32-j)/32*PI)*(-ava))-Math.floor(Math.cos(0)*(-ava))+1
}
}
}
}
for(k=0;k<=128;k++){
for(i=0;i<4;i++){
ava=(noiseP1Final[i*32][k]-noiseP1Final[(i+1)*32][k])/2
if(ava>=0){
for(j=0;j<32;j++){
noiseP1FinalTure[i*32+j][k]=noiseP1Final[i*32][k]+Math.round(Math.cos(j/32*PI)*ava)-Math.round(Math.cos(0)*ava)
}
}else if(ava<0){
for(j=0;j<32;j++){
noiseP1FinalTure[i*32+j][k]=noiseP1Final[(i+1)*32][k]+Math.round(Math.cos((32-j)/32*PI)*(-ava))-Math.round(Math.cos(0)*(-ava))
}
}
}
}
//第二次生成(复杂程度II)
for(k=0;k<=8;k++){
noiseP1Final[k*16]=[]
for(i=0;i<=8;i++){
b=Math.seededRandom(18,-18)
noiseP1Final[k*16][i*16]=b
}
for(i=0;i<8;i++){
ava=(noiseP1Final[k*16][i*16]-noiseP1Final[k*16][(i+1)*16])/2
if(ava>=0){
for(j=0;j<16;j++){
noiseP1Final[k*16][i*16+j]=noiseP1Final[k*16][i*16]+Math.floor(Math.cos(j/16*PI)*ava)-Math.floor(Math.cos(0)*ava)
}
}else if(ava<0){
for(j=0;j<16;j++){
noiseP1Final[k*16][i*16+j]=noiseP1Final[k*16][(i+1)*16]+Math.floor(Math.cos((16-j)/16*PI)*(-ava))-Math.floor(Math.cos(0)*(-ava))
}
}
}
}
for(k=0;k<=128;k++){
for(i=0;i<8;i++){
ava=(noiseP1Final[i*16][k]-noiseP1Final[(i+1)*16][k])/2
if(ava>=0){
for(j=0;j<16;j++){
noiseP1FinalTure[i*16+j][k]+=noiseP1Final[i*16][k]+Math.round(Math.cos(j/16*PI)*ava)-Math.round(Math.cos(0)*ava)
}
}else if(ava<0){
for(j=0;j<16;j++){
noiseP1FinalTure[i*16+j][k]+=noiseP1Final[(i+1)*16][k]+Math.round(Math.cos((16-j)/16*PI)*(-ava))-Math.round(Math.cos(0)*(-ava))
}
}
}
}
//第三次生成(复杂程度III)
for(k=0;k<=16;k++){
noiseP1Final[k*8]=[]
for(i=0;i<=16;i++){
c=Math.seededRandom(5,-5)
noiseP1Final[k*8][i*8]=c
}
for(i=0;i<16;i++){
ava=(noiseP1Final[k*8][i*8]-noiseP1Final[k*8][(i+1)*8])/2
if(ava>=0){
for(j=0;j<8;j++){
noiseP1Final[k*8][i*8+j]=noiseP1Final[k*8][i*8]+Math.floor(Math.cos(j/8*PI)*ava)-Math.floor(Math.cos(0)*ava)
}
}else if(ava<0){
for(j=0;j<8;j++){
noiseP1Final[k*8][i*8+j]=noiseP1Final[k*8][(i+1)*8]+Math.floor(Math.cos((8-j)/8*PI)*(-ava))-Math.floor(Math.cos(0)*(-ava))
}
}
}
}
for(k=0;k<=128;k++){
for(i=0;i<16;i++){
ava=(noiseP1Final[i*8][k]-noiseP1Final[(i+1)*8][k])/2
if(ava>=0){
for(j=0;j<8;j++){
noiseP1FinalTure[i*8+j][k]+=noiseP1Final[i*8][k]+Math.round(Math.cos(j/8*PI)*ava)-Math.round(Math.cos(0)*ava)
}
}else if(ava<0){
for(j=0;j<8;j++){
noiseP1FinalTure[i*8+j][k]+=noiseP1Final[(i+1)*8][k]+Math.round(Math.cos((8-j)/8*PI)*(-ava))-Math.round(Math.cos(0)*(-ava))
}
}
}
}
//打印地形
for(i=0;i<=128;i++){
for(j=0;j<=128;j++){
for(h=0;h<=noiseP1FinalTure[i][j]+basic-4;h++){
voxels.setVoxel(i,h,j,129)
}
for(h=noiseP1FinalTure[i][j]+basic-4;h<=noiseP1FinalTure[i][j]+basic-1;h++){
voxels.setVoxel(i,h,j,125)
}
voxels.setVoxel(i,noiseP1FinalTure[i][j]+basic,j,127)
}
}
主要更新:结构优化,增加地形复杂程度
效果如下:

2023-06-28T21:21:58 点赞:0
在 【BOX3】随机地形0.1.0 中回复
0.1.1版本压缩了一下代码,新代码如下:
console.clear()
basic=70//地基高度,自选
Math.seed=Math.random()
Math.seededRandom = function(max,min){//随机数代码,不用管它
max=max||1;
min=min||0
Math.seed=(Math.seed*9301+49297)%233280;
var rnd=Math.seed/233280.0;
return(Math.ceil(min+rnd*(max-min)))
}
noiseP1Final = new Array(128).fill([]);//模拟地图盘
noiseP1FinalTure = new Array(128).fill([]);//最终地图盘
const PI=3.1415926535
for(k=0;k<=128;k++){//初始化地图
noiseP1FinalTure[k]=[]
}
for(k=0;k<=128;k++){
for(b=0;b<=128;b++){
noiseP1FinalTure[k][b]=0
}
}
//——————————算法主体——————————
function landswanp(x,y,maxh,minh){//xy=128
for(k=0;k<=x;k++){
noiseP1Final[k*y]=[]//初始化地图
for(i=0;i<=x;i++){
a=Math.seededRandom(maxh,minh)//种子取高
noiseP1Final[k*y][i*y]=a
}
for(i=0;i<x;i++){//平滑算法核心
ava=(noiseP1Final[k*y][i*y]-noiseP1Final[k*y][(i+1)*y])/2
if(ava>=0){
for(j=0;j<y;j++){
noiseP1Final[k*y][i*y+j]=noiseP1Final[k*y][i*y]+Math.floor(Math.cos(j/y*PI)*ava)-Math.floor(Math.cos(0)*ava)
}
}else if(ava<0){
for(j=0;j<y;j++){
noiseP1Final[k*y][i*y+j]=noiseP1Final[k*y][(i+1)*y]+Math.floor(Math.cos((y-j)/y*PI)*(-ava))-Math.floor(Math.cos(0)*(-ava))
}
}
}
}
for(k=0;k<=128;k++){
for(i=0;i<x;i++){
ava=(noiseP1Final[i*y][k]-noiseP1Final[(i+1)*y][k])/2
if(ava>=0){
for(j=0;j<y;j++){
noiseP1FinalTure[i*y+j][k]+=noiseP1Final[i*y][k]+Math.round(Math.cos(j/y*PI)*ava)-Math.round(Math.cos(0)*ava)
}
}else if(ava<0){
for(j=0;j<y;j++){
noiseP1FinalTure[i*y+j][k]+=noiseP1Final[(i+1)*y][k]+Math.round(Math.cos((y-j)/y*PI)*(-ava))-Math.round(Math.cos(0)*(-ava))
}
}
}
}
}
//地形生成
landswanp(4,32,30,-30)
landswanp(8,16,18,-18)
landswanp(16,8,5,-5)
//打印地形
for(i=0;i<=128;i++){
for(j=0;j<=128;j++){
for(h=0;h<=noiseP1FinalTure[i][j]+basic-4;h++){
voxels.setVoxel(i,h,j,129)
}
for(h=noiseP1FinalTure[i][j]+basic-4;h<=noiseP1FinalTure[i][j]+basic-1;h++){
voxels.setVoxel(i,h,j,125)
}
voxels.setVoxel(i,noiseP1FinalTure[i][j]+basic,j,127)
}
}
效果大致是一样的
2023-06-28T21:39:59 点赞:0