用户:
山海kvz查看:2 回复:1 评论:2 创建时间:2022-07-25T13:59:33
需要的模型:茂盛的喵,花,树(先看图片,最后看代码)

var seaLevel=20;
var xzZoom=15;
var yZoom=15;
var exZ1=1;
var exZ2=1;
var exZ3=10;
var base=15;
(async function(){
for(let i=0;i<127;i+=0.1){
var xh=Math.sin(i/xzZoom)*yZoom;
for(let j=0;j<127;j+=0.1){
var zh=Math.pow(Math.sin(j/xzZoom),3)*yZoom*exZ1;
if(xh+zh+base<seaLevel){
voxels.setVoxel(i,xh+zh+base,j,"add");
for(let k=0;k<xh+zh+base-1;k++){
voxels.setVoxel(i,k,j,"at");
}
}else if(Math.round(xh+zh+base)==seaLevel){
voxels.setVoxel(i,xh+zh+base,j,"red_light");
for(let k=0;k<xh+zh+base-1;k++){
voxels.setVoxel(i,k,j,"snow");
}
}else{
voxels.setVoxel(i,xh+zh+base,j,"ice");
for(let k=0;k<xh+zh+base-1;k++){
voxels.setVoxel(i,k,j,"bamboo");
}
}
}
await sleep(10);
}
for(let i=0;i<127;i++){
for(let j=0;j<127;j++){
for(let k=0;k<=seaLevel;k++){
if(voxels.getVoxel(i,k,j)==0){
voxels.setVoxel(i,k,j,"milk");
}
}
}
}
})()
var blockN="black";
var radius=15;
var start={x:喵,y:30,z:喵};
function circle(block,y,rad){
for(let radius=1;radius<=rad;radius++){
for(let angle=0;angle<360;angle++){
var x=Math.round(Math.sin(Math.PI/180*angle)*radius+start.x);
var z=Math.round(Math.cos(Math.PI/180*angle)*radius+start.z);
voxels.setVoxel(x,y,z,blockN);
}
}
voxels.setVoxel(start.x,start.y,start.z,rad);
}
function ball(radiusNum,blockName){
for(let ang=0;ang<=90;ang++){
var radi=Math.round(Math.cos(Math.PI/180*ang)*radiusNum);//把球切片
var slice=Math.round(Math.sin(Math.PI/180*ang)*radiusNum);
circle(blockName,start.y+slice,radi);
circle(blockName,start.y-slice,radi);
}
}
ball(radius,start.y,blockN);
//1.从模型库生成一个模型到场景
const meshScale = 1/16 //默认模型方块大小倍数为地图方块的1/16
world.createEntity({
mesh:'mesh/茂盛的喵.vb',//模型名
collides:false,//能碰撞
fixed:true,//固定
gravity:false,//受重力影响
meshScale:[meshScale,meshScale,meshScale],//xyz放大倍数
position:[63,10,63],//位置坐标
})
// 2 改代码, 生成多种模型到场景
function spawn(x,y,z,meshName){
const meshScale = 1/16 //默认模型方块大小倍数为地图方块的1/16
return world.createEntity({
mesh:meshName,//模型名
collides:false,//能碰撞
fixed:true,//固定
gravity:false,//受重力影响
meshScale:[meshScale,meshScale,meshScale],//xyz放大倍数
position:[x,y,z],//位置坐标
})
}
spawn(63,10,63,'mesh/茂盛的喵.vb')
spawn(63,10,65,'mesh/花.vb')
spawn(63,10,67,'mesh/树.vb')
//3 用for循环随机生成树林(先用一个for循环只生成喵地, 然后再演示后两个for循环把花和树加进来)
function spawn(x,y,z,meshName,scale){
const meshScale = scale/16 //默认模型方块大小倍数为地图方块的1/16
return world.createEntity({
mesh:meshName,//模型名
collides:false,//能碰撞
fixed:true,//固定
gravity:false,//受重力影响
meshScale:[meshScale,meshScale,meshScale],//xyz放大倍数
position:[x,y,z],//位置坐标
})
}
for(var i=0;i<800;i++){
spawn(Math.random()*127,9,Math.random()*127,'mesh/茂盛的喵.vb',1)
}
for(var i=0;i<50;i++){
spawn(Math.random()*127,9,Math.random()*127,'mesh/花.vb',1)
}
for(var i=0;i<100;i++){
spawn(Math.random()*127,9,Math.random()*127,'mesh/树.vb',3+3*Math.random())
}
//4 修改代码, 修正模型Y坐标使模型完喵出地面, 并给树木加碰撞
function spawn(x,y,z,meshName,scale){
const meshScale = scale/16 //默认模型方块大小倍数为地图方块的scale/16
const entity = world.createEntity({
mesh:meshName,//模型名
collides:false,//能碰撞
fixed:true,//固定
gravity:false,//受重力影响
meshScale:[meshScale,meshScale,meshScale],//xyz放大倍数
position:[x,y,z],//位置坐标
})
correctY(entity)
return entity
}
for(var i=0;i<800;i++){
spawn(Math.random()*127,9,Math.random()*127,'mesh/茂盛的喵.vb',1)
}
for(var i=0;i<50;i++){
spawn(Math.random()*127,9,Math.random()*127,'mesh/花.vb',1)
}
for(var i=0;i<100;i++){
let tree = spawn(Math.random()*127,9,Math.random()*127,'mesh/树.vb',3+3*Math.random())
tree.collides = true
}
async function correctY(entity){
await sleep(1)//entity.bounds需要等到下一个tick才会变成真正的值
entity.position.y += entity.bounds.y//bounds.y是中心点到模型顶部或底部的距离
}
//生成一个小方块
voxels.setVoxel(喵,9,喵,'stone')
//方块变柱子
for(var y=9;y<19;y++){
voxels.setVoxel(喵,y,喵,'stone')
}
//柱子变墙
for(var y=9;y<19;y++){
for(var x=喵;x<74;x++){
voxels.setVoxel(x,y,喵,'stone')
}
}
//墙变立方体
for(var y=9;y<19;y++){
for(var x=喵;x<74;x++){
for(var z=喵;z<74;z++){
voxels.setVoxel(x,y,z,'stone')
}
}
}
//空心碉堡
function cube(sx,sy,sz,x_size,y_size,z_size,vox){ //s_x代表star_x
var ex = sx+x_size //e_x代表end_x
var ey = sy+y_size
var ez = sz+z_size
for(var x=sx;x<ex;x++){
for(var y=sy;y<ey;y++){
for(var z=sz;z<ez;z++){
voxels.setVoxel(x,y,z,vox)
}
}
}
}
cube(63,9,63,10,10,10,'stone')
cube(喵,11,喵,9,6,9,'')
world.say("吉吉喵最棒了")
//控制其他玩家说话
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你想要坑的人") {x.say("hello")}})
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "ZNS卿本尊") {x.player.canFly = true}});
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "ZNS卿本尊") {x.player.spectator = true}});
// 控制玩家的行走和跳跃
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你要坑的人") {x.velocity.y+=1}})// 跳一下
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你要坑的人") {x.velocity.x+=1}}) // 向右或左走一步
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你要坑的人") {x.velocity.z+=1}}) // 向前向后退
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你要坑的人") {x.velocity.x=10}}) //传送
//控制玩家大小
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你要坑的人") {x.player.scale = 6}}) // scale 的值可以变
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "ZNS卿本尊") {x.player.invisible = false}}); // true是隐身 false是解除
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "ZNS卿本尊") {x.player.emissive = 2}});
// 强制退出游戏
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你要坑的人") {x.player.Pokering=false}}); //true是喵
// 强制退出游戏
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你要坑的人") {x.fixed = true}}); //true是喵
world.onTick((tickEvent) => {
console.log(tickEvent.elapsedTimeMS);
console.log(tickEvent.prevTick);
console.log(tickEvent.skip);
console.log(tickEvent.tick);
})
var time;
world.onTick((tickEvent) => {
time += tickEvent.elapsedTimeMS;
//tickEvent.elapsedTimeMS 是离上次 Tick 有多少毫秒(ms)
//也就是说,time 的单位是毫秒(ms)
})
world.onTick((tickEvent) => {
time += tickEvent.elapsedTimeMS;
//tickEvent.elapsedTimeMS 是离上次 Tick 有多少毫秒(ms)
//也就是说,time 的单位是毫秒(ms)
timeS = time/1000;
//秒与毫秒的进制为 1000,timeS 的单位是秒(s)
})