unity下的物理解决方案有哪些
- Box2D-开源的Box2D库 c++代码库 是2D的解决方案
- Nvidia Physx - Nvidia的Phys库,这套库有一个缺点就是非确定性库,也就是说同样的物理输入可能产生的结果不一样,这样在状态同步中无法做逻辑处理
- Unity Physics - 为了物理模拟确定性推出了这个。但是无完全模拟整套物理效果。
- Havok Physics for unity
看项目设置
2D的项目就用Physics 2D
3D的项目就用Physics
碰撞矩阵是这俩个设置的比较重要的一个地方。矩阵所有都勾选上是比较耗费性能的 ,这样就需要为每种项目设置不同的图层
Auto sync Transforms选项
这个选项是在transform组件发生变化时,强制物理模拟更新,这样会增加负担。不开启并不是模拟更新了,而是再FixUpdate()后再模拟更新
Reuse Collision Callbacks选项
尽量保持开启。这样在物理引擎对所有碰撞回调时,会保重用上次碰撞结果。会节省内存负担,降低GC开销
对于meshCollier我们尽量能不能用就不用,因为他是基于三角面形的碰撞,占用内存高。如果项目中必须要用MeshCollider。建议在PlyaerSetting选项中勾选Prebake Collision Meshs在构建应用时预先Bake出碰撞网格,这样就避免了运行在构建Mesh网格。