前言
physical 引擎就是在遊戲中模擬真實世界中的物理效果。Unity內建了NVIDIA的Physx物理引擎,Physx是目前使用最為廣泛的物理引擎,被很多遊戲大作所採用,開發者可以通過物理引擎高效、逼真地模擬剛體碰撞、車輛駕駛、布料、重力等物理效果,使遊戲畫面更加真實而生動。
physical 引擎主要包含三個核心內容:
1. Collider是最基本的觸發物理的條件,例如碰撞檢測。基本上,沒有Collider物理系統基本沒有意義(除了重力)
2. Rigidbody是物體的基本物理屬性設定,當檢測碰撞完之後,就要計算物理效果,而Rigidbody提供計算基本引數。
3. PhysicMaterial則是附加的基本物理引數,是一個物理材質,UNITY3D有自帶預設的物理材質的係數(在Edit/Project Settings/Physic下設定),它參與碰撞的計算例如反彈效果摩擦效果等。
三大類型的Collider
1、Static Collider(靜態碰撞器):帶有Collider沒有新增Rigidbody的物件,用於靜止物體如地理環境。
2、Rigidbody collider:帶有rigidbody的collider物件,能夠根據物理引擎很好的響應外力和碰撞作用。
3、Kinematic rigidbody collider:帶有rigidbody的collider物件,開啟Is kinematic。
PhysicMaterial有哪些主要屬性?
dynamicFriction:移動摩擦力,值在0到1之間。
staticFriction:靜止摩擦力,值在0到1之間。
Character Controller(角色控制器)的特性 角色本身不受Physics影響,需要接受外力作用時,使用OnCharacterColliderHit();
使用角色控制器如何防止角色經常卡住?
Skin Width:設定為radius的10%;
Step offset:對於2meter(米)高的Character設為0.1到0.4;
Min move distance設為0即可。
Rigidbody常用屬性
開啟Is Kinematic後物體不受物理引擎影響,只受Transform控制;
Freeze Position凍結位置軸向,Freeze Rotation凍結方向軸向,凍結之後的軸向只受Transform控制;使用Physics時不要使用Transform
CharacterController和Rigidbody的區別?
CharacterController自帶膠囊碰撞器,裡面包含有剛體的屬性;
Rigidbody就是剛體,使物體帶有剛體的特徵。
什麼是Trigger?
Collider勾選Is Trigger屬性,碰撞器變成觸發器;
在物體發生碰撞的整個過程中,有幾個階段,分別列出對應的函式?
OnCollisionEnter(進入)、OnCollisionStay(保持)、OnCollisionExit(退出)
什麼叫做鏈條關節?
Hinge Joint,可以模擬兩個物體間用一根鏈條連線在一起的情況,能保持兩個物體在一個固定距離內部相互移動而不產生作用力,但是達到固定距離後就會產生拉力。
小結:
本篇主要講解的是一些基本的觀念以及常用的物理屬性,在我們製作場景的時候會常常需要用到一些物理的屬性,如果大家對於屬性不了解的話可以將一些關鍵字記得,其實網路上就很多的範例以及觀念可以給大家參考了。
參考文獻:https://docs.unity3d.com/Manual/PhysicsSection.html