用户:
翎with珝查看:1 回复:4 评论:1 创建时间:2023-05-18T12:20:20
代码很L
适当观看
console.clear()
const car = {
name: '单人载具',//载具互动名称
mesh: '车-8',//载具名字,不带 mesh/ 和 .vb 的
scale: [1 / 10, 1 / 10, 1 / 10],//载具大小
quat: new Box3Quaternion(0, 1, 0, -1),//载具旋转角度,根据情况调整
mass: Math.pow(9999999999999, 9999999999999)//载具重量
}
for (let i = 0; i <= 25; i++) {//生成25辆车
let e = world.createEntity({
mesh: `mesh/${car['mesh']}.vb`,
meshScale: car['scale'],
collides: true,
fixed: false,
gravity: true,
position: [Random(10, 246), Random(30, 50), Random(10, 246)],
mass: car['mass']
})
e.addTag('无人')
e.addTag('car')
e.maxHp = car['hp']
e.hp = car['hp']
e.meshOrientation.copy(e.meshOrientation.rotateY(Math.PI / 360 * Random(10, 270)))
}
world.onPlayerJoin(async ({ entity }) => {
entity.player.originPlayerMesh = entity.mesh
entity.player.By_car = false
})
world.onPress(async ({ entity, button }) => {
if (button == Box3ButtonType.ACTION1) {
if (entity.player.By_car == true) {
let result = await entity.player.dialog({
type: Box3DialogType.SELECT,
title: car['name'],
content: `是否要离开此载具`,
options: ['离开', '取消']
});
if (!result) return;
if (result) {
if (result.value == '离开') {
entity.mesh = entity.player.originPlayerMesh
entity.player.invisible = false
entity.player.enableJump = true
entity.player.runSpeed = 0.3
entity.player.runAcceleration = 0.28
entity.player.walkSpeed = 0.17
entity.player.walkAcceleration = 0.12
entity.player.crouchSpeed = 0.08
entity.player.crouchAcceleration = 0.07
let New_Car_Position = entity.position
let e = world.createEntity({
mesh: `mesh/${car['mesh']}.vb`,
meshScale: car['scale'],
collides: true,
fixed: false,
gravity: true,
position: [New_Car_Position.x + 2, New_Car_Position.y + 2, New_Car_Position.z + 2],
mass: car['mass']
})
e.addTag('无人')
e.addTag('car')
e.maxHp = car['hp']
e.hp = car['hp']
e.meshOrientation.copy(e.meshOrientation.rotateY(Math.PI / 360 * Random(10, 350)))
entity.player.By_car = false
entity.removeTag('car')
entity.player.cancelDialogs()
} else {
entity.player.cancelDialogs()
}
}
}
}
})
world.onTick(async () => {
world.querySelectorAll('*').forEach(async (e) => {
if (e.hasTag('car')) {
e.enableInteract = true
e.interactHint = car['name']
e.interactRadius = 5
e.onInteract(async ({ entity }) => {
if (e.hasTag('无人') && !entity.player.By_car == true) {
let result = await entity.player.dialog({
type: Box3DialogType.SELECT,
title: car['name'],
content: `是否要乘坐此载具`,
options: ['乘坐', '取消']
});
if (!result) return;
if (result) {
if (result.value == '乘坐') {
e.removeTag('无人')
e.addTag('有人')
e.addTag(entity.player.name)
entity.player.originPlayerMesh = entity.mesh
entity.mesh = e.mesh
entity.meshScale = car['scale']
entity.meshOrientation = car['quat']
entity.player.invisible = true
entity.player.enableJump = false
entity.player.runSpeed = 1
entity.player.runAcceleration = 2
entity.player.walkSpeed = 1
entity.player.walkAcceleration = 0.8
entity.player.crouchSpeed = 0.7
entity.player.crouchAcceleration = 0.7
entity.player.By_car = true
entity.player.cancelDialogs()
entity.addTag('car')
e.destroy()
} else {
entity.player.cancelDialogs()
}
}
} else {
entity.player.dialog({
type: Box3DialogType.TEXT,
title: car['name'],
content: `当前状态无法乘坐载具`,
});
}
})
}
})
})
function Random(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}