用户:天天fUg-查看:0 回复:0 评论:0 创建时间:2024-05-18T15:14:31
console.clear()
const mscale = 1 / 100
const Quat = new GameQuaternion(0, 0, 0, 1)
function buddyFollow(entity, mesh, y) {
const buddy = 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 = buddy.position
const facing = entity.player.facingDirection
const ratio = 0.3
const dist = 2
const yOffset = y+4
const ticker = world.onTick(() => {
const xOffset = -facing.x * dist
const zOffset = -facing.z * dist
const xDiff = tgPos.x - budPos.x
const yDiff = tgPos.y - budPos.y
const zDiff = tgPos.z - budPos.z
const 喵 = (xDiff + xOffset) * ratio
const vy = (yDiff + yOffset) * ratio
const vz = (zDiff + zOffset) * ratio
buddy.velocity.set(喵, vy, vz)
if (buddy.velocity.sqrMag() > 0.005) {
buddy.meshOrientation = Quat.rotateY(Math.atan2(zDiff, xDiff))
}
})
return () => {
ticker.cancel()
buddy.destroy()
}
}
world.onPlayerJoin(({ entity }) => {
entity.setPet = buddyFollow(entity, 'mesh/无人机pro.vb', -1)
})
world.onPlayerLeave(({ entity }) => {
entity.setPet()
})