Lv.1
在 【墨教】俗话说上车容易下车难……吗? 中回复
玩家原来的跑步速度是:0.3994140625 而不是0.5 在代码编辑界面输入这串代码: console.clear()//清空控制台 world.onPlayerJoin(({entity})=>{//当玩家进入游戏 console.log(entity.player.runSpeed)//在控制台输出他的跑步速度 }) 这样就能看到玩家的初始跑步速度了
2021-05-15T17:13:38 点赞:2
在 【每日一个岛3建图小技巧】拥有一个跟随的皮卡丘?就决定是你啦! 中回复
交作业:
console.clear()
const mscale = 1 / 16
const Quat = new Box3Quaternion(0, 0, 0, 1)
function bu喵yFollow(entity, mesh, y) {
const bu喵y = world.createEntity({
mesh,
position: entity.position,
meshScale: [mscale, mscale, mscale],
gravity: false, //不受重力影响
fixed: false, //可推移
collides: true, //可碰撞
friction: 0, //无摩擦力
mass: 0.01, //非常轻
})
const tgPos = entity.position//僚机的目标位置
const budPos = bu喵y.position//僚机的当前位置
const facing = entity.player.facingDirection//玩家的朝向
const ratio = 0.5//追随的灵敏度, 最好设在0.5左右, 1.0表示立即移到玩家位置
const dist = 0 //与玩家保持的距离
const yOffset = y //y轴位移, 保持僚机在头顶或脚下
const ticker = world.onTick(() => {
//要让小精灵跟在玩家背后, 需要计算xz轴的位移: 玩家朝向的反方向
const xOffset = facing.x * dist
const zOffset = facing.z * dist
//当前位置与目标位置在xyz轴的差距
const xDiff = tgPos.x - budPos.x
const yDiff = tgPos.y - budPos.y
const zDiff = tgPos.z - budPos.z
//计算xyz方向上 当前位置向目标位置靠拢的速度
const 喵 = (xDiff + xOffset) * ratio
const vy = (yDiff + yOffset) * ratio
const vz = (zDiff + zOffset) * ratio
bu喵y.velocity.set(喵, vy, vz)//设置僚机速度
if (bu喵y.velocity.sqrMag() > 0.005) {//速度要足够大, 才触发转向, 防止抖动
bu喵y.meshOrientation = Quat.rotateY(Math.atan2(zDiff, xDiff)) //让小精灵一直面向玩家
}
})
return () => {
ticker.cancel() //关掉tick循环
bu喵y.destroy() //移除僚机实体
}
}
world.onPlayerJoin(({ entity }) => {
entity.setPet = bu喵yFollow(entity, 'mesh/无人机.vb', 2) //给玩家增加宠物
})
world.onPlayerLeave(({ entity }) => {
//玩家离开地图时, 切记一定要关掉tick循环以及销毁小精灵实体, 否则随着人数增加, 服务器积累到一定程度就会崩溃
entity.setPet() //干掉宠物
})2021-05-23T13:04:25 点赞:1
在 【岛3】六月一日,将有大事 中回复
注意有一行代码:
Box3.destroy();
在岛三里,entity.destroy()是用来删除实体的
所以...6月1号时...Box3将会...?
2021-05-28T22:24:59 点赞:3