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

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

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

  如下:

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

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

最新文章

  1. webstorm自动编译typescript
  2. AFN 无网络监控
  3. mysql计划任务每天定时执行
  4. struts2域值操作
  5. [转]解决WebClient或HttpWebRequest首次连接缓慢问题
  6. python如何获取某模块的版本信息
  7. GridView自定义之前后效果对比
  8. Oracle中本行记录和上一行记录进行比较lead over 函数处理
  9. union判断CPU是little-endian还是big-endian存储
  10. JDK版本过高,导致Eclipse报错
  11. CSS围住浮动元素的三种方法
  12. Useful Articles for the Oracle E-Business Suite Technology Stack for Technical Consultant / DBA [ID
  13. Synchronized锁在Spring事务管理下,为啥还线程不安全?
  14. Vue2 学习笔记1
  15. BKDR Hash 函数实现
  16. 关于DAL层使用静态方法,并在WEB层直接调用的问题
  17. java中使用OpenOffice
  18. join命令详解
  19. Numpy入门笔记第二天
  20. Hadoop序列化与Writable接口(二)

热门文章

  1. SOFAJRaft源码阅读-模块启动过程
  2. 前端防错以及好用小tips指南总结
  3. 10月31日ATM编写逻辑描述
  4. TCP与UDP、socket模块
  5. 2023.1.13 [网络流24题] 餐巾计划问题 LuoguP1251
  6. LeetCode_单周赛_328
  7. 数据存储单位、编程语言的发展史、python解释器版本、解释器的下载与安装、多版本共存、第一个python程序、pycharm下载
  8. 给力的Zstack云主机
  9. 如何将项目打包成apk或exe程序
  10. 钓鱼攻击之:CHM电子书钓鱼