• 《CSOL大灾变》Mobile开发记录——武器音效部分


      在前端时间开发了武器系统的大部分逻辑,从武器购买界面,武器购买逻辑到游戏逻辑(拾起和丢弃武器)等都开发得差不多了。剩下的仅仅只是增加武器数据(模型,动画和音效,特效等等),然后用统一脚本逻辑定义载入游戏中,不需要再大概底层代码了。

      这次记录下武器音效部分,在一个游戏中,一个交互动作往往包含很多部分,比如一个挥刀的动作由“挥刀动画”+“挥刀音效”+“挥刀逻辑”+“挥刀碰撞检测”。这涉及到游戏引擎中各个子引擎模块的调度和协调(比如动画系统,渲染系统,输入系统,音效系统,物理碰撞系统)。

      在这次CSOL大灾变移植中,我使用jMonkey引擎提供的AudioTrack(由于默认的AudioTrack功能有限,所以我自己写了一个),然后通过动画Track附加到指定动画的某个时间点上,这样,不需要写代码,即可完成对所有模型在编辑器上进行统一音效附加。

      如下:

      首先,添加AudioNode节点,并将音效数据设置好,接着,找到要附加的动画,然后右键Add AudioTrack,指定附加时间点(可随时调整),如下:

      但是这样有一个问题,比如我们播放一个动画,默认的AudioNode内部通过监听动画播放完成和时间累加计算来调度音效,这样有一个问题就是:如果我们正在播放挥刀动画,然后过了0.1秒又立刻播放一次新的挥刀动画而不是等待当前挥刀结束后再播放。这样就会因为是同一个动画的原因,导致时间累加始终没有结束,导致只能出现第一次的音效而没有后续的挥刀音效,为了完成这一点,我们自定义一个AudioTrack。然后使用自定义的AudioTrack进行附加即可。

  • 相关阅读:
    WIN32弹窗报时间【CSDN】
    函数返回类型为引用的好处
    计算机补码的秘密【转】
    设计模式之Singleton模式【类只有一个对象】
    bitwise constness与logical constness【EC++笔记】
    避免使用隐式类型转换【转】
    private, public, protected,继承【转】
    nonlocal static对象初始化【EC++笔记】
    在资源管理类中提供对原始资源的访问【EC++笔记】
    copy构造函数与copy赋值操作符【EC++笔记】
  • 原文地址:https://www.cnblogs.com/JhonKkk/p/14317764.html
Copyright © 2020-2023  润新知