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

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

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

  如下:

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

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

《CSOL大灾变》Mobile开发记录——武器音效部分的更多相关文章

  1. Dokuwiki 二次开发记录

    Dokuwiki 二次开发记录 [转]http://www.syyong.com/other/Dokuwiki-Secondary-Development-Record.html DokuWiki 是 ...

  2. CozyRSS开发记录22-界面退化

    CozyRSS开发记录22-界面退化 1.问题1-HtmlTextBlock 找的这个HtmlTextBlock有很严重的bug,有时候显示不完全,有时候直接就崩了.然后看了下代码,完全是学生仔水平写 ...

  3. CozyRSS开发记录21-默认RSS源列表

    CozyRSS开发记录21-默认RSS源列表 1.默认列表 在第一次使用CozyRSS的情况下,我们让它内置五个RSS源吧: 2.响应RSS源的更新 先不处理RSS源列表项的点击,响应下下拉菜单里的更 ...

  4. CozyRSS开发记录20-CanResizeWithGrip

    CozyRSS开发记录20-CanResizeWithGrip 1.窗口样式 首先,WindowStyle有四种: 然后,对于窗口缩放的ResizeMode,也有四种,CanResize和CanRes ...

  5. CozyRSS开发记录19-窗口标题栏交互

    CozyRSS开发记录19-窗口标题栏交互 1.谈谈对mvvm解耦的看法 在使用mvvm时,如何操作窗口,这是一个问题.这个问题的关键点是:mvvm是把view和viewmodel解耦了的,很多写法一 ...

  6. CozyRSS开发记录18-番外之Atom1.0的支持

    CozyRSS开发记录18-番外之Atom1.0的支持 1.对CozyRSS.Syndication批判一番 由于我工作的主要开发语言是c++,所以会看到我的c#代码写得非常朴素,很多语法糖都没有用上 ...

  7. CozyRSS开发记录17-Html2Xaml

    CozyRSS开发记录17-Html2Xaml 1.RssContentView还需要优化 上回做了RssContentView的显示,但是对于rss返回的描述(摘要),连换行的没有,更别说里面还有h ...

  8. CozyRSS开发记录16-RssContentView显示

    CozyRSS开发记录16-RssContentView显示 1.RssContentView的布局和绑定 继续参照原型图来写xaml: 然后在RSSContentFrameViewModel里提供绑 ...

  9. CozyRSS开发记录15-获取和显示RSS内容

    CozyRSS开发记录15-获取和显示RSS内容 1.内容列表 我们先给RSSContentFrame增加一个ViewModel,里面和RSS源列表一样,提供一个ObservableCollectio ...

  10. CozyRSS开发记录14-RSS源管理初步完工

    CozyRSS开发记录14-RSS源管理初步完工 1.添加源的响应 DialogHost.Show有几个版本的重载,加一个DialogClosingEventHandler参数.我们让添加源对话框的添 ...

随机推荐

  1. Luogu P6394 樱花,还有你题解

    原题链接:樱花,还有你 $\scr{\color{DarkOrchid}{Solution}}$ Subtask1 这是一个送分的:总和都不到$n$,无论怎么收集,花瓣数肯定不到$n$,输出impos ...

  2. Keepalived高可用集群部署

    KeepAlived 目录 KeepAlived KeepAlived安装 KeepAlived部署 准备工作 主备模式 节点配置 验证 正常状态 故障 故障恢复 1+N(一主多备)模式 节点配置 验 ...

  3. vue修改内容点击显示隐藏内容不自动刷新问题

    今天遇到一个在card组件中点击显示隐藏的问题,修改了动态绑定的值,但是组件内容没有刷新,但是偶而其他元素修改导致页面动态刷新又刷新了,就猜想修改这个数组中一个对象的值并没有引起vue的动态刷新 解决 ...

  4. Selenium 资源汇总

    created: 2022-8-4 驱动 资源名 网址 说明 chromedriver https://registry.npmmirror.com/binary.html?path=chromedr ...

  5. javaweb-LoginDemo在JdbcTemp的登录实现及总结+进阶javabean改进

    刚开始发现- -我好像忘记了JdbcTemp的知识了,以为自己学漏了,重新回去看了一下,还好还记得,所以今天做一个案例: 案例分析: 登录的实现 步骤: 先导入jar包,然后写一个简单的html页面 ...

  6. Python关键字 asynico

    同步和异步 同步和异步是指程序的执行方式.在同步执行中,程序会按顺序一个接一个地执行任务,直到当前任务完成.而在异步执行中,程序会在等待当前任务完成的同时,执行其他任务. 同步执行意味着程序会阻塞,等 ...

  7. JSTL标签库C标签的使用注意事项

    今天在写jsp中在c标签上踩了不少坑,在此记录一下. <c:if>标签单独使用,不与<c:otherwise>配套使用,搭配使用会报错. <c:otherwise> ...

  8. ROS入门:服务

    服务端实现一个加法,将结果反馈给客户端 客户端将要计算的和的两个数发给服务的. 1.自定义服务数据 创建一个srv文件:AddTwoInts.srv int64 a int64 b --- int64 ...

  9. 为Jekyll静态网站添加PlantUML插件

    前言 突然想起来要好好整理一下自己的博客空间,已经荒废很多年,如果再不捡起来,等到自己知识老化的时候再去写东西就没人看了. 使用Github Pages + Jekyll把博客发布为静态网站,给人感觉 ...

  10. Visual Studio 集成了.NET 升级助手插件

    .NET团队2023年2月16日在官方博客上发布了名为".NET Upgrade Assistant"的全新 Visual Studio 扩展,帮助开发人员升级.NET 应用程序. ...