猫史档案馆


函数的妙用-------BOX

用户:DebugDynamoDebugDynamo查看:1 回复:7 评论:1 创建时间:2021-09-30T13:10:42


大家都知道,我是屑(划掉)

今天心血喵发个教程。

关于函数的(会的不要喷!!!)

————————————————————————————————

我今天要做n个武器特效,都是发射子弹的。

首先拿出搬砖的代码(划掉)

改一改,改一改

结果成了:

const MeshScale = [1 / 16, 1 / 16, 1 / 16] //正常的模型缩放比例
const Quat = new Box3Quaternion(0, 0, 0, 1) //默认的旋转状态

world.onPress(async ({ entity, button }) => {

    if (button === Box3ButtonType.ACTION0) {
        const d = entity.player.facingDirection //玩家的朝向
        const knife = world.createEntity({
            mesh: 'mesh/刀.vb',
            meshScale: MeshScale,
            collides: true, // 开启碰撞
            gravity: false, // 不受重力影响
            position: entity.position, // 在玩家的位置生成飞刀
            velocity: d.scale(2), // 飞刀的初速度是玩家朝向向量的2倍
            meshOrientation: Quat.rotateY(Math.atan2(d.z, d.x)), // 刀头指向玩家的朝向
        })
        knife.id = entity.player.userKey //将小刀的id设置成玩家userKey, 便于碰撞过滤器识别
        knife.onEntityContact(({ other }) => {//每当飞刀碰到另一个实体
            other.hurt(10)//被碰实体受10点伤害
        })
        await sleep(2000)//等2秒后
        knife.destroy()//清除飞刀, 防止飞刀数量太多超过服务器负载
    }
})

………………………………

问题来了:我要多次运用到这个代码,该怎么办啊

函数:我来啦!!!!!!!

改一改,改一改:

onst $1 = world.querySelector
const $2 = world.querySelectorAll
async function texiao1(entity, mesh, meshs, gravity, v, quat, hu, shi) {
    if (entity.leng == false) {
        return
    }
    const d = entity.player.facingDirection //玩家的朝向
    const knife = world.createEntity({
        mesh: mesh,
        meshScale: meshs,
        collides: true, // 开启碰撞
        gravity: gravity, // 不受重力影响
        position: entity.position, // 在玩家的位置生成飞刀
        velocity: d.scale(v), // 飞刀的初速度是玩家朝向向量的2倍
        meshOrientation: quat.rotateY(Math.atan2(d.z, d.x)), // 刀头指向玩家的朝向
    })
    knife.id = entity.player.userKey //将小刀的id设置成玩家userKey, 便于碰撞过滤器识别
    knife.onEntityContact(({ other }) => {//每当飞刀碰到另一个实体
        other.hurt(hu, {
            attacker: entity
        })//被碰实体受10点伤害
        knife.destroy()//清除飞刀, 防止飞刀数量太多超过服务器负载
    })
    knife.onVoxelContact(({ voxel }) => {//每当飞刀碰到另一个实体
        knife.destroy()//清除飞刀, 防止飞刀数量太多超过服务器负载
    })
    entity.leng = false
    await sleep(shi)
    entity.leng = true
}

看着这一堆参数,你的脑袋是不是晕了(划掉)

讲解一下:

entity都知道的

mesh表示模型名称

meshs表示模型大小(格式我就不讲了)

gravity表示重力的开启和关闭

v是速度

quat是模型的旋转(格式都知道的)

hu表示伤害

shi表示冷却时间(单位是秒的千分之一)

接下来开始运用

比如:

texiao1(entity, 'mesh/黄金剑气.vb', MeshScale, false, 1.3, Quat, 10, 1)

你学废了吗???()()()

下一期咱们讲别的。(也许不会有下一期了)

这是个水帖

 

 


回复

上一页1 页 / 共 1下一页
时当日色QWQ时当日色QWQ

沙发

点赞0


评论


DebugDynamoDebugDynamo

肯定大部分人看不懂

看懂的都是大佬

点赞2


评论


DebugDynamoDebugDynamo

喵是来  潮

点赞0


评论


Python-happyyyyPython-happyyyy

az

点赞0


评论


DebugDynamoDebugDynamo

少了个c

自己补上

点赞0


评论


正所谓:打代码最重要的无非就是举一反三(你这发教程的模式咋和我这么像???)

点赞0


评论


无极玄天无极玄天

好代码,我要了

点赞0


评论