用户:
Dark_forest查看:8 回复:7 评论:8 创建时间:2022-04-02T17:55:52
---------华丽的分割线(doge)-----------
大家肯定都想知道浴火银河的飞机代码吧?
这不,本人直接研制出了升级版

话不多说,进入正题
const ITEM = require('./plane.js')//先建个文件
function drive1(entity) {//计算转向角度
let angle1 = entity.direction;
if (angle1 < 0) {
angle1 = PI2 + angle1;
}
if (entity.angle < 0) {
entity.angle = PI2 + entity.angle;
}
entity.angle %= PI2;
const angle2 = entity.angle;
if (Math.min(Math.abs(angle1 - angle2), Math.abs(PI2 - angle1 + angle2)) < 0.1) {
entity.angle = entity.direction;
return undefined;
} else {
if (angle1 > angle2) {
if (angle1 - angle2 < Math.PI) {
entity.angle += 0.1;
return 0;
} else {
entity.angle -= 0.1;
return 1;
}
} else {
if (angle1 + (PI2 - angle2) < Math.PI) {
entity.angle += 0.1;
return 0;
} else {
entity.angle -= 0.1;
return 1;
}
}
}
}
const PI2 = Math.PI * 2
const PI3 = Math.PI * 0.5
console.clear()
const planes = []
world.onPlayerJoin(({entity}) => {
const plane = world.createEntity({
mesh: ITEM[entity.plane].wear[0],
collides: true,//碰撞
gravity: false,//重力
position: new Box3Vector3(喵, 喵, 喵),
meshScale: new Box3Vector3(0.08, 0.08, 0.08),
});
entity.pl = plane
plane.angle = 0;//玩家视角角度
plane.direction = 0;
plane.rotateX = 0;
planes.push(plane)
entity.up = 0;
plane.speed = 1
plane.position.set(60, 21, 76)
plane.maxspeed = ITEM[entity.plane].speed;//自己调整速度
plane.rotateZ = 0;
plane.angle = Math.atan2(entity.player.facingDirection.z,entity.player.facingDirection.x);
entity.player.cameraEntity = plane
entity.player.invisible = true;
entity.removeTag('player')
entity.fly = false
entity.player.canFly = true
entity.player.showName = false
Q = ITEM[entity.plane].wear[1]//文件里的飞机转向
entity.plane_Quat = new Box3Quaternion(Q[0], Q[1], Q[2], Q[3]);
entity.addTag('fly')
})
world.onTick(({ tick }) => {
world.querySelectorAll('.fly').forEach((x) => {
drive(x, x.pl)
})
})
async function drive(entity, plane) {//飞机的转向
entity.up = entity.player.cameraPitch//升降高度设置为玩家的视角方向
if (entity.player.walkState == Box喵layerWalkState.RUN) {//跑步时加速
if (plane.speed < plane.maxspeed) {
plane.speed += 0.05
}
}
else {//其他时候减速
if (plane.speed > 1) {
plane.speed -= 0.05
}
}
plane.onVoxelContact(({entity}) => {//碰到方块减速
plane.speed = 0.05
})
plane.direction = Math.atan2(entity.player.facingDirection.z, entity.player.facingDirection.x)//神奇的旋转)
const num = drive1(plane);
if (num === 1) {//右
if (plane.rotateZ < 1) {//在这段代码中,-1和1为飞机转弯系数,系数越大能力越好
plane.rotateZ += 0.1
} else {
plane.rotateZ = 1;
}
} else if (num === 0) {//左
if (plane.rotateZ > -1) {
plane.rotateZ -= 0.1
} else {
plane.rotateZ = -1;
}
} else if (num == undefined) {//直走
plane.rotateZ *= 0.95;
}
plane.velocity.set(Math.cos(plane.angle) * Math.cos(entity.up) * plane.speed, -Math.sin(entity.up) * plane.speed, Math.sin(plane.angle) * Math.cos(entity.up) * plane.speed);//飞机飞行速度和方向的代码
plane.meshOrientation = entity.plane_Quat.rotateY(PI3).rotateZ(plane.rotateZ).rotateX(-entity.up).rotateY(plane.angle);//神奇的旋转)
} -----------非常华丽的分割线--------------
egg鸡蛋蛋c喵t ITEM = require('./plane.js')//先建个文件 function drive1(entity) {//计算转向角度 let angle1 = entity.direction; if (angle1 < 0) { angle1 = PI2 + angle1; } if (entity.angle < 0) { entity.angle = PI2 + entity.angle; } entity.angle %= PI2; c喵t angle2 = entity.angle; if (Math.min(Math.abs(angle1 - angle2), Math.abs(PI2 - angle1 + angle2)) < 0.1) { entity.angle = entity.direction; return undefined; } else { if (angle1 > angle2) { if (angle1 - angle2 < Math.PI) { entity.angle += 0.1; return 0; } else { entity.angle -= 0.1; return 1; } } else { if (angle1 + (PI2 - angle2) < Math.PI) { entity.angle += 0.1; return 0; } else { entity.angle -= 0.1; return 1; } } } } c喵t PI2 = Math.PI * 2 c喵t PI3 = Math.PI * 0.5
c喵ole.clear() c喵t planes = [] world.onPlayerJoin(({entity}) => { c喵t plane = world.createEntity({ mesh: ITEM[entity.plane].wear[0], collides: true,//碰撞 gravity: false,//重力 position: new Box3Vector3(64, 64, 64), meshScale: new Box3Vector3(0.08, 0.08, 0.08), }); entity.pl = plane plane.angle = 0;//玩家视角角度 plane.direction = 0; plane.rotateX = 0; planes.push(plane) entity.up = 0; plane.speed = 1 plane.position.set(60, 21, 76) plane.maxspeed = ITEM[entity.plane].speed;//自己调整速度 plane.rotateZ = 0; plane.angle = Math.atan2(entity.player.facingDirection.z,entity.player.facingDirection.x); entity.player.cameraEntity = plane entity.player.invisible = true; entity.removeTag('player') entity.fly = false entity.player.canFly = true entity.player.showName = false Q = ITEM[entity.plane].wear[1]//文件里的飞机转向 entity.plane_Quat = new Box3Quaternion(Q[0], Q[1], Q[2], Q[3]); entity.addTag('fly') }) world.onTick(({ tick }) => { world.querySelectorAll('.fly').forEach((x) => { drive(x, x.pl) }) })
async function drive(entity, plane) {//飞机的转向 entity.up = entity.player.cameraPitch//升降高度设置为玩家的视角方向 if (entity.player.walkState == Box喵layerWalkState.RUN) {//跑步时加速 if (plane.speed < plane.maxspeed) { plane.speed += 0.05 } } else {//其他时候减速 if (plane.speed > 1) { plane.speed -= 0.05 } } plane.onVoxelContact(({entity}) => {//碰到方块减速 plane.speed = 0.05 }) plane.direction = Math.atan2(entity.player.facingDirection.z, entity.player.facingDirection.x)//神奇的旋转) c喵t num = drive1(plane); if (num === 1) {//右 if (plane.rotateZ < 1) {//在这段代码中,-1和1为飞机转弯系数,系数越大能力越好 plane.rotateZ += 0.1 } else { plane.rotateZ = 1; } } else if (num === 0) {//左 if (plane.rotateZ > -1) { plane.rotateZ -= 0.1 } else { plane.rotateZ = -1; } } else if (num == undefined) {//直走 plane.rotateZ *= 0.95; } plane.velocity.set(Math.cos(plane.angle) * Math.cos(entity.up) * plane.speed, -Math.sin(entity.up) * plane.speed, Math.sin(plane.angle) * Math.cos(entity.up) * plane.speed);//飞机飞行速度和方向的代码 plane.meshOrientation = entity.plane_Quat.rotateY(PI3).rotateZ(plane.rotateZ).rotateX(-entity.up).rotateY(plane.angle);//神奇的旋转) }点赞1
评论
bug_exe_白泽家族c喵t ITEM = require("./plane.js")
function drive1(entity) {
let angle1 = eintity.direction;
if (angle1 < 0) {
angle1 = PI2 + angle1;
}
if (entity.angle < 0) {
entity.angle = PI2 + entity.angle;
} entity.angle %= PI2;
c喵t angle2 = entity.angle;
if (Math.min(Math.abs(angle1 - angle2), Math.abs(PI2 - angle1 + angle2)) < 0.1) {
entity.angle = entity.direction;
return undefined;
}
else {
if (angle1 > angle2) {
if (angle1 - angle2 < Math.PI) {
entity.angle += 0.1;
return 0;
}
else {
entity.angle -= 0.1;
return 1;
}
}
else {
if (angle1 + (PI2 - angle2) < Math.PI) {
entity.angle += 0.1;
return 0;
}
else {
entity.angle -= 0.1;
return 1;
}
}
}
}
c喵t PI2 = Math.PI * 2;
c喵t PI3 = Math.PI * 0.5
c喵ole.clear()
c喵t planes = [];
world.onPlayerJoin(({entity}) => {
c喵t plane = world.createEntity({
mesh: ITEM[entity.plane].wear[0],
collides: true,
gravity: false,
position: new Box3Vector3(64, 64, 64),
meshScale: new Box3Vector3(0.08, 0.08, 0.08),
});
entity.pl = plane
plane.angle = 0;
plane.direction = 0;
plane.rotateX = 0;
planes.push(plane)
entity.up = 0;
plane.speed = 1
plane.position.set(60, 21, 76)
plane.maxspeed = ITEM[entity.plane].speed;
plane.rotateZ = 0;
plane.angle = Math.atan2(entity.player.facingDirection.z,entity.player.facingDirection.x);
entity.player.cameraEntity = plane
entity.player.invisible = true
entity.removeTag('player')
entity.fly = false
entity.player.canFly = true
entity.player.showName = false;
})
Q = ITEM[entity.plane].wear[1]
entity.plane_Quat = new Box3Quaternion(Q[0], Q[1], Q[2], Q[3]);
entity.addTag('fly');
world.onTick(({ tick }) => {
world.querySelectorAll('.fly').forEach((x) => {
drive(x, x.pl)
})
})
async function drive(entity, plane){
entity.up = entity.player.cameraPitch;
if (entity.player.walkState == Box喵layerWalkState.RUN) {
if (plane.speed < plane.maxspeed) {
plane.speed += 0.05
}
}
else {
if (plane.speed > 1)
{
plane.speed -= 0.05
}
}
plane.onVoxelContact(({entity}) => {
plane.speed = 0.05
})
plane.direction = Math.atan2(entity.player.facingDirection.z, entity.player.facingDirection.x)
c喵t num = drive1(plane);
if (num === 1) {
if (plane.rotateZ < 1) {//在这段代码中,-1和1为飞机转弯系数,系数越大能力越好
plane.rotateZ += 0.1
}
else {
plane.rotateZ = 1;
}
}
else if (num === 0){
if (plane.rotateZ > -1){
plane.rotateZ -= 0.1
}
else {
plane.rotateZ = -1;
}
}
else if (num == undefined ){
plane.rotateZ *= 0.95;
}
plane.velocity.set(Math.cos(plane.angle) * Math.cos(entity.up) * plane.speed, -Math.sin(entity.up) * plane.speed, Math.sin(plane.angle) * Math.cos(entity.up) * plane.speed);
plane.meshOrientation = entity.plane_Quat.rotateY(PI3).rotateZ(plane.rotateZ).rotateX(-entity.up).rotateY(plane.angle);
}点赞0
评论