《CSOL大灾变》Mobile开发进度记录——扔掉与拾取武器的逻辑
在武器系统的开发过程中,涉及到武器的丢弃逻辑。由于场景是复制场景,而自己写碰撞测试和抛物线以及重力下落来模拟扔掉一把武器,并且要防止武器扔到墙里。如果自己实现这些逻辑,那么会占用渲染线程的时间开销,即使单独在子线程中实现这部分碰撞和物理模拟。也还需要注意很多细节,而jMonkey物理引擎本身就支持并行线程模拟,并且可以包含完整,自然且标准的反弹物理模拟与碰撞检测。所以使用物理刚体去实现是最有效的手段。
我们需要注意两点:
1.约束武器刚体x,y,z旋转;
2.约束武器刚体只与指定对象碰撞,同时防止武器之间的碰撞;
3.对武器施加抛物线冲量来模拟物理扔掉;
这三点注意下,就可以完成一个简单的武器丢弃逻辑了,而且几乎不占用性能开销。下面是测试GIF:

接下来,我们需要能够拾取武器,如果我们仍然使用刚体去做碰撞的话,那么势必会与玩家发生碰撞,当我们只需要通知碰撞触发,而不需要执行碰撞处理。什么意思呢?简单的说,就是玩家接触武器后受到碰撞信息,但是不发生碰撞处理(即不会站在武器的包围盒上面),如果我们手动每帧去做包围盒测试,跟上面提到的一样,即浪费cpu时间又要自己额外线程避免渲染线程。所以,最标准的做法就是触发器,同Unity一样,可以添加一个物理触发器(GhostControl)。然后把触发器设置为检测玩家的碰撞标记组,提高物理引擎的效率。
效果如下:

这里,我们使用刚体模拟物理运动与碰撞,使用触发器让玩家可以监测拾取物体。这么做效率非常高,也是标准游戏的做法,比起自己在更新函数中做什么射线检测,包围盒检测要高效很多,因为实时物理引擎的算法比起自己在更新函数中去做检测算法要高效太多了。所以尽可能全部用物理引擎去处理(这实际上就是目前所有主流游戏的做法),不建议用古老的技术(比如BSP,检测包围盒这些),而应该统一处理物理引擎。
在这里,紫色包围盒是刚体碰撞体,黄色包围盒是触发器。
完成这些后,就可以集成到游戏中了。
《CSOL大灾变》Mobile开发进度记录——扔掉与拾取武器的逻辑的更多相关文章
- jQuery mobile 开发问题记录
一.动态加载页面问题 1.存在这样一个页面布局: main.html 为主界面A,B为该页面中的三个page,其中A为splitview左部分页面,B为右半部页面 a1.html 为一个独立的页面 a ...
- [课程设计]Scrum 3.3 多鱼点餐系统开发进度(下单详细信息页面设计)
Scrum 3.3 多鱼点餐系统开发进度(下单详细信息页面设计) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到店点 ...
- Lenovo k860i 移植Android 4.4 cm11进度记录【上篇已完结】
2014.5.16 为了验证一下下载的CM11的源码有没有问题,决定编译一下cm官方支持的机器,手上正好有台nexus7 2012,就拿它为例测试一下在mac os x平台的整个编译过程. 1. 最开 ...
- iOS开发之记录用户登录状态
iOS开发之记录用户登录状态 我们知道:CoreData的配置和使用步骤还是挺复杂的.但熟悉CoreData的使用流程后,CoreData还是蛮好用的.今天要说的是如何记录我们用户的登陆状态.例如微信 ...
- [课程设计]Scrum 3.8 多鱼点餐系统开发进度(留言反馈系统设计)
Scrum 3.8 多鱼点餐系统开发进度(留言反馈系统设计) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到店点餐系统 ...
- [课程设计]Scrum 3.7 多鱼点餐系统开发进度(留言板选择方案)
Scrum 3.7 多鱼点餐系统开发进度(留言板选择方案) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到店点餐系统W ...
- [课程设计]Scrum 3.6 多鱼点餐系统开发进度(用户测试反馈页面构思&留言板设计)
Scrum 3.6 多鱼点餐系统开发进度(用户测试反馈页面构思&留言板设计) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团 ...
- [课程设计]Scrum 3.5 多鱼点餐系统开发进度(修复Bug&美化页面)
Scrum 3.5 多鱼点餐系统开发进度(修复Bug&美化页面) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅 ...
- [课程设计]Scrum 3.4 多鱼点餐系统开发进度(下单详细信息页面&会员信息页面)
Scrum 3.4 多鱼点餐系统开发进度(下单详细信息页面&会员信息页面) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队 ...
- [课程设计]Scrum 3.2 多鱼点餐系统开发进度(页面优化&下单详细信息页面)
Scrum 3.2 多鱼点餐系统开发进度(页面优化&下单详细信息页面) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选 ...
随机推荐
- NuxtJS踩坑日记,一步一步爬出我自己挖的坑。
NuxtJS 2 errors and 2 warnings potentially fixable with the `--fix` option. 第二种报错 Error: No build ...
- Xcode找不到.h或者.m文件解决办法 .h file not found
Xcode找不到.h或者.m文件解决办法 .h file not found 开篇唠叨 小黑最经又开始干iOS接入微信SDK了,目前刚开始就遇到了困难,于是总结一下分享给大家,要是大家看完了还解决 ...
- QtCharts模块勾画折线和曲线图
QtCharts画线图主要三个部分组成 QLIneSeries或QSplineSeries用于保存联系的坐标位置数据,QChart用于管理图像显示,例如图例,坐标主题等,QChartView则用于显示 ...
- 洛谷 P2629 好消息,坏消息(单调队列)
题目链接 首先想到的就是暴力前缀和,枚举一个区间每次统计前缀和,前缀和的某一个值为负数时就退出 如何枚举区间? 比如样例: \(4\) \(-3\ 5\ 1\ 2\) 可以使用一种断环为链的操作, 让 ...
- 如何注册chatgpt,如何使用chatgpt,以及chatgpt无法访问的原因。chatgpt问题总结。
chatgpt显示所在的国家地区不可用的原因. 1:chatgpt国内是不能访问的,是需要借助魔法. 一.注册过程中的问题. \1. OpenAI或ChatGPT官网打不开.这是由于ChatGPT目前 ...
- 安装云崽Bot+GPT3插件
安装云崽Bot+GPT3插件 这次我们来搭建云崽Bot,云崽Bot其实是一个用于原神的机器人,不过众多大佬开发出了很多有趣的插件供我们使用,这次我们就是用其中的一个插件Chat-gpt(其不是正宗的C ...
- 给力的Zstack云主机
合肥光源储存环纵向震荡可视化展示初步结果 前两天做好上面的可视化展示后,想着顺道把那个时间的二维图分析结果给出来吧,就又把纵向震荡的每个束团的频谱和相位顺道可视化显示出来,给计算这些结果的云主机又加点 ...
- quasar使用electron打包
quasar使用electron打包 从构建好的项目中,我们不难发现,electron打包有两种方式: electron-packager打包 这篇博客是通过我尝试了很多种方法之后,最先开始,我使 ...
- TCP/IP协议(1): IP 地址和寻址方式 —— IP 协议的基础
TCP/IP协议(1): IP 地址和寻址方式 -- IP 协议的基础 最近在重学计算机网络,给自己立一个 flag,有感而发的时候写关于 TCP/IP 协议栈的系列博客. IP 地址 IP 地址(I ...
- Excel操作技巧
命令 获取行号ROW(D2).COLOUM(D2) 快捷键 alt+=求和:alt+f1生成柱形图:alt+回车强制换行:alt+178输入平方:alt+179输入立方: shitf+大十字光标 换位 ...