猫史档案馆


【box3】单人载具(超氵版

用户:翎with珝翎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;
}


回复

上一页1 页 / 共 1下一页
翎with珝翎with珝

挖()

点赞0


评论


文件文件文件是只大屑awa文件文件文件是只大屑awa

nb

点赞0


评论


betray_竹箫betray_竹箫

6              

点赞0


评论


呵呵0486呵呵0486

不懂就问()

car['hp']是啥()

点赞0


评论