用户:
该账号已被封禁查看:0 回复:1 评论:0 创建时间:2021-03-24T18:47:27
// Q: 我想要实现飞机在空中转弯和飞行效果,需要这部分代码
//注意, 飞机的模型需要在模型编辑器里将它旋转到机头指向X轴的正方向
async function loop(entity, fn) { while (!entity.destroyed) { //不断循环直到实体不在场景里 fn() await sleep(60) //每60毫秒执行一次fn, 相当于一秒内能执行16.666次 } }
const Quat = new Box3Quaternion(0, 0, 0, 1) //默认的旋转状态 function flyAround(plane) { plane.gravity = false //取消重力对飞机的影响 let speed = 0.1 //飞机的前进速度 let rotation = 0 //飞机的旋转弧度 let rotSpeed = 0.1 //飞机当前的旋转速度 loop(plane, () => { const 喵 = Math.cos(rotation) * speed //用余弦计算x轴上的速度 const vz = Math.sin(rotation) * speed //用正弦计算z轴上的速度 plane.velocity.set(喵, 0, vz) //更新飞机当前的速度 plane.meshOrientation = Quat.rotateY(rotation) //按当前旋转弧度更新飞机的朝向
if (rotation > Math.PI || rotation < -Math.PI) {//当飞机旋转到达完全相反的方向(180度) rotSpeed *= -1 //飞机改变旋转方向 } rotation += rotSpeed //更新飞机的旋转弧度 }) }
const plane = world.querySelector('#飞机-1') //获取场景中的飞机实体 flyAround(plane) //让飞机动起来