猫史档案馆


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

用户:DebugDynamoDebugDynamo查看:0 回复:6 评论:0 创建时间:2021-09-30T13:16:01


话不多说上代码

这次讲的特效可以全方位发射

参数都是一样哒

async function texiao2(entity, mesh, meshs, gravity, v, quat, hu, raycast, 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.rotateX(Math.atan2(raycast.direction.y, Math.sqrt(raycast.direction.x ** 2 + raycast.direction.z ** 2))).rotateY(Math.atan2(raycast.direction.z, raycast.direction.x))//这里是神奇的旋转) // 刀头指向玩家的朝向
    })
    knife.id = entity.player.userKey //将小刀的id设置成玩家userKey, 便于碰撞过滤器识别
    knife.velocity.x = raycast.direction.x * v
    knife.velocity.y = raycast.direction.y * v
    knife.velocity.z = raycast.direction.z * v
    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
}

看看如何使用

举个栗子

texiao2(entity, 'mesh/子弹.vb', MeshScale, false, 4, Quat1, 10, raycast, 1)

好啦结束了

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


回复

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

沙发

点赞0


评论


DebugDynamoDebugDynamo

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

这帖子真水

点赞0


评论


DebugDynamoDebugDynamo

别沙发沙发的

那么水的帖子

点赞0


评论


ZNS_哪吒ZNS_哪吒

顶顶

点赞0


评论


DebugDynamoDebugDynamo

az

点赞0


评论


稚兔丸稚兔丸

顶顶顶

点赞0


评论