《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.团队选 ...
随机推荐
- 2023牛客寒假算法基础集训营1 ACDEFGHKLM
比赛链接 A 题解 知识点:模拟. 显然. (用char输入到一半直接给答案跳出,WA了两小时,无话可说. 时间复杂度 \(O(1)\) 空间复杂度 \(O(1)\) 代码 #include < ...
- Ubuntu 22.04 安装搜狗输入法
下载搜狗输入法 下载地址https://shurufa.sogou.com/linux 也可以命令下载 wget https://ime.sogouimecdn.com/202212182151/3b ...
- 数据湖Hudi与对象存储Minio及Hive\Spark\Flink的集成
本文主要记录对象存储组件Minio.数据湖组件Hudi及查询引擎Hive\Spark之间的兼容性配置及测试情况,Spark及Hive无需多言,这里简单介绍下Minio及Hudi. MinIO 是在 G ...
- vue学习笔记(一) ---- vue指令(总体大纲)
一.什么是Vue 官方文档:https://cn.vuejs.org/v2/guide/ 关键字: 渐进式框架 自底向上增量开发 视图层 单文件组件 复杂的单页应用 复杂的单页应用: 顾名思义,单页应 ...
- Python标准库pathlib及实例操作
Python标准库pathlib及实例操作 https://docs.python.org/zh-cn/3.9/library/pathlib.html 官网 讲的比较好的文章 https://zhu ...
- keypoint数据结构
公有属性 (float)angle:角度,表示关键点的方向,-1为初值. (int)class_id:当要对图片进行分类时,我们可以用class_id对每个特征点进行区分,未设定时为-1,需要靠自己设 ...
- TIM + DMA + ADC
#include "public.h" #define FFT_POINT (256) static uint16_t _DmaBuffer[FFT_POINT]; static ...
- uboot启动过程 2
512M内存, 地址范围 [0x80000000, 0xA0000000) UBOOT原先位置 0x87800000, 移动后的位置0x9FF47000, 也就是最后 700多k, 前面的位置 ...
- EPICS Archiver Appliance 单点极限储存速率测试
https://blog.csdn.net/weixin_43767046/article/details/113748775 这个测试一直在进行,虽然因为摸数据库设置而重启过并清过库,但读示波器波形 ...
- makefile 入门第一课
makefile入门第一课 百度百科makefile词条: 一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中. makefile 定义了一系列的规则来指定,哪些文件需要先编译,哪些 ...