本文主要是介绍Unreal 入门-Collision和Physics,碰撞检测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
-
Collision仅仅掌管碰撞发生的检测和回调,而Physics仅仅模拟碰撞发生之后位置速度等等的变化。
-
Collision 可以设置persets,里边的标签都是不同的碰撞处理逻辑。Collision仅仅检测是否碰碰撞和回调一些碰撞处理函数。
-
CollisionEnable管理检测决定可以碰撞之后,是仅仅发生overlap回调、raycast(射线拾取)、sweep(扫描建模)还是有物理反馈,有下边三个选项
-
NoCollision:就算重叠,并且通过channel检测可以碰撞,也不发生overlap,不raycast,不物理反馈 。
-
NoPhysicsCollision:发生重叠,通过channel检测可以碰撞之后,进行overlap,raycast,但是不物理反馈,也就是会有一些函数被调用,但是一定会互相穿过 。
-
PhysicsOnly:发生物理碰撞,但不会进行overlap,也不raycast。
-
CollisionEnable:发生重叠,channel决定可以碰撞,进行overlap(未确定,因为Block了之后可能不会overlap),raycast,并且进行物理反馈(要求碰撞双方至少有一方进行PhysicsSimulate,不然还是会穿模,毕竟如果两物体都不进行物理模拟,那么双方都不会回弹,但是都是刚体,物理上说不通,只能穿模),只有这个选项才会使得函数回调,并且有物理表现 。
-
-
CollisionEnable后边的,本物体会忽视哪些类型碰撞体,会仅仅和哪些类型发生overlap,又和哪些类型发生Block,这里的设定又是和CollisionEnabled里边的限制是与关系的,比如CollisionEnable里不允许发生物理反馈,而这里表示要发生Block,但是最后不会发生Block的。
-
WorldStatic - Volumes and world geometry should be WorldStatic.
-
WorldDynamic - Moving Actors outside of Pawns, PhysicsBodies, Vehicles, and Destructible Actors. Like an elevator.
-
Pawn - Characters.
-
PhysicsBody - Any physics object that is or can be simulated in the world.
-
Vehicle - A good response to have so you can have Pawns jump into them.
-
Destructible - Destructible Actors.
-
-
关于Mesh的碰撞网格 ,Collision使用的碰撞体全部是继承自Mesh的,而Mesh的碰撞体是在MeshEditor里边自行编辑的。Editor里边有一个选项CollisionComplexity,有三种选择,第一种是Simple,第二种是Complex,第三种是Default。
-
Simple:Mesh的碰撞体全部由简单立体图形组成,比如Sphere,Cube等等,可以手工添加和删除,与Mesh本体的匹配度不是很高,但是只有Simple支持PhysicsSimulate,这个是重点。
-
Complex:每一个Ploy都会计算碰撞,计算量相当大,于是不支持PhysicsSimulate,实用Complex碰撞之后,如果再使用物理模拟的话,会穿过底面掉到无穷远去。
-
-
另外必须注意一点,就是我们人物的运动受控于两个大组件,一个是物理引擎,还有一个是MovementComponent。
-
MovementComponent一定要注意,它很容易被忽视,比如CharacterMovementComponent,它的内部也实现了一个重力移动逻辑,和物理引擎是完全独立的!
-
-
-
添加组件之后要把Default Scene Root 替换掉。比如添加了一个Collision组件。然后把创建组件时的Default Scene Root替换掉。不然碰撞可能会有问题。
这篇关于Unreal 入门-Collision和Physics,碰撞检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!