unity不规则碰撞_碰撞算法
碰撞算法⼀般在很多物理引擎⾥⾯都能看到其⾝影
物理引擎
物理引擎都有基本的 碰撞,刚体,重⼒等基本功能
PhysX:  unity引擎和ue4引擎使⽤
Havok:  Frostbite(寒霜) 引擎使⽤ 还有⼤名⿍⿍的<<;塞尔达荒野之息>> 也是使⽤的这个
Box2D:  cocos 2D引擎使⽤ 愤怒的⼩鸟使⽤
Chipmunk:  cocos 2d引擎使⽤
其中physx 和havok为3D物理引擎. 更有很多复杂功能 ⽔(流体),爆炸模拟(粒⼦),⾐服布料模拟(软体)等等.
碰撞体
如 我们游戏开发⽬前使⽤最多的unity使⽤的physx
physx中的碰撞体collider
1. box collider
2. Sphere collider
3. Capsule collider
4. Mesh collider除了meshCollider 是不规则的形状 来判断碰撞,同时为了性能 物理引擎也本⾝限制了 mesh collider不超过200个⾯其
他⼏个 collider都很好理解
碰撞原理
⾔归正传说到碰撞算法 以上介绍的物理引擎 其实都是开源的 可以下载源码看到⾥⾯的内部实现.  可以看到各种引擎的碰撞算法⼏乎都是⼀
致的.
⽆⾮就是把物理放⼊各种包围盒, 再判断包围盒的范围判断出碰撞
包围盒种类
1. AABB包围盒
2. sphere包围球
3. obb⽅向包围盒
4. fdh固定⽅向凸包单人开发选ue4还是unity
aabb包围盒检查碰撞
2D下的应⽤
Data Class GameObj(  Var xmin: int,  Var xmax: int,  Var ymin: int,  Var ymax: int)Fun check(obj1: GameObj, obj2:GameObj){  in <= an &&  o
3D下的应⽤
同理 只是加⼀个Z的判断.
sphere包围球检查碰撞
2D下的应⽤
Data Class Point(  Var x: float,  Var y: float)Data Class GameObj(  Var point: Point = 1  Var radius: int = 2)Fun distance(p1: Point, p2 :Point){  return Math.sqrt(Mat 3D下同理
所有的碰撞检测都是基于这些基本算法拓展⽽来
碰撞算法->包围盒->碰撞体->物理引擎
在游戏引擎端直接使⽤物理引擎
Unity⾥⾯ ⼀帧的逻辑 简单浓缩⼀下
n次fixUpdate ()-> update ()-> render()
物理引擎则在fixupdate()⾥⾯每帧的计算

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。