当前位置: 首页 > news >正文

Unity性能优化5【物理篇】

1.刚体的碰撞检测属性首选离散型

离散碰撞的缺点是小物体快速移动时,有丢失碰撞的风险。此下拉菜单中,越下面的选项碰撞检测频率越高,性能消耗也显著增加。因此在选择碰撞检测类型时尽量选择离散型

2.优化碰撞矩阵

合理标记碰撞矩阵可以减少物理引擎需要处理的碰撞数量,进而大幅度降低物理引擎的工作量。

从图中可以看出,碰撞矩阵的行将layer从高到低排列,矩阵的列将layer从低到高排列,当添加和修改layer后,碰撞矩阵也会刷新。

当处理碰撞时,物理引擎将忽略不适合此矩阵的对象,并允许对象彼此移动而不发生碰撞。启用复选框意味着在碰撞检测阶段将检查这两个层中的碰撞器,另外项目中最多有32个层。

3.避免在运行时加入和变换静态碰撞器

静态碰撞器:附加了碰撞组件没有附加刚体组件的gameObject

静态碰撞器类似于质量无穷大的物体,无论受到多打的力都不会移动,可以起到无形屏障的作用

动态碰撞器:附加了碰撞组件并且附加刚体组件的gameObject

两个动态碰撞器发生碰撞时,它们都会基于牛顿运动定律做出反应

物理引擎会自动将动态碰撞器和静态碰撞器分为两种不同的数据结构,当运行时加入和变换静态碰撞器时会重新生成该数据结构产生CPU开销,因此应避免

4.避免运行时修改刚体属性将对象从睡眠状态唤醒

物理引擎会将刚体对象标记为休眠和唤醒两个状态,休眠对象被外力或碰撞唤醒之前将不产生CPU开销。当对象的速度小于Sleep Threshold参数时会进入休眠状态。在运行时修改刚体的任何属性会将游戏对象从睡眠状态唤醒。

5.将一些工作放到代码中减少物理开销

和碰撞/位移有关的效果值得思考在不使用物理组件的情况下是否可以实现,比如游戏中有个掉血区,可以通过检测玩家的transform.position属性来替代使用物理碰撞。

6.避免使用复杂的碰撞组件

基本体碰撞组件有较高的检测效率,复杂碰撞组件的性能消耗显著增加。碰撞总是涉及成对的对象,解决碰撞所需的工作量取决于两个对象的复杂性。两个基本体碰撞组件的性能最佳,基本体和复杂碰撞组件的性能次之,两个复杂碰撞组件的性能最差。

7.重叠而不碰撞时开启IsTrigger

游戏中常见的角色靠近传送门进行传送的实现往往是在传送门对象上加一个碰撞组件,并开启IsTrigger。其特征是只关心两个对象是否重叠,不需要两个对象之间产生力的作用,这种情况下应该开启IsTrigger开关。IsTrigger开启后,对象将被物理引擎忽略进而减少开销。

http://www.lryc.cn/news/477611.html

相关文章:

  • 我的工具列表
  • 985研一学习日记 - 2024.11.5
  • Vue2 与 Vue3 的区别
  • 虚拟现实技术课程开发思路
  • triangle_area_calculators库发布
  • ClickHouse数据库SSL配置和SSL连接测试
  • 云渲染与汽车CGI图像技术优势和劣势
  • 信号与噪声分析——第二节:随机变量的统计特征
  • PHP网络爬虫常见的反爬策略
  • java java.util.Scanner设置编码
  • 小菜家教平台(二):基于SpringBoot+Vue打造一站式学习管理系统
  • Android AndroidManifest 文件内标签及属性
  • 修改sql server 数据库的排序规则Chinese_PRC_CI_AS(字符集+排序)
  • 【ChatGPT】让ChatGPT在回答中附带参考文献与来源
  • 云计算 在esxi 如何创建磁盘存储
  • 大屏可视化:舞动数据与美观的“设计秘籍”
  • w~视觉~3D~合集1
  • android 怎么查看依赖包的大小
  • HyperLogLog 的原理 详解
  • OCR、语音识别与信息抽取:免费开源的AI平台在医疗领域的创新应用
  • 苍穹外卖Bug集合
  • 小菜家教平台(一):基于SpringBoot+Vue打造一站式学习管理系统
  • PyCharm中pylint安装与使用
  • 一篇文章了解TCP/IP模型
  • python文字识别---基于百度api
  • linux下linuxdeployqt打包过程
  • 【拥抱AI】AI大模型在软件开发中的应用如何保证数据安全?
  • python爬取旅游攻略(1)
  • C++网络编程之IO多路复用(一)
  • vscode在windows和linux如何使用cmake构建项目并make生成可执行文件,两者有什么区别