文章目錄
- 碰撞
- 條件
- 開啟模擬
- 關閉模擬
- 多層級的Mesh
- UE的BUG
- 觸發
- 觸發條件
碰撞
條件
1必須有網格體組件
2網格體組件必須有網格,沒有網格雖然可以開啟物理模擬,但是不會有任何效果
注意開啟的模擬的網格體組件會計算自己和所有子網格的mesh范圍
3只有網格體組件可以開啟物理模擬
4 碰撞雙方對對方的通道必須都設置為阻擋,本物體的通道如下
開啟模擬
SetActorEnableCollision:設置Actor啟用碰撞
Set Simulate Enable:開啟物理模擬
Get Component by class:查找網格體組件
關閉模擬
上邊反過來
多層級的Mesh
啟用哪個Mesh的物理模擬和碰撞,就會計算該mesh下的所有Mesh,但是如果子mesh設置了不檢測特定的層,那么父mesh的物理模擬不會對忽略的層有反應
UE的BUG
一旦開啟物理模擬,會導致網格體和根物體分離,雖然還是一個物體,但選中網格時,根物體會保持在分離前的位置不再移動
解決方案:
讓網格體組件做根物體。
方法:
新建一個網格體組件,直接拖到根物體身上,注意不是拖到物體名上。
擴展:
對于槍械,他的網格體可能時靜態網格體,也可能時骨骼網格體,如果簡單的把某一種網格體作為跟節點,會導致另一個網格體不被支持。
所以我們要用靜態網格體做為根物體,在weapon的子類中,如ak47,再在根物體下新建一個網格體,拖入真正的模型
但是這樣又會導致根物體沒有網格,進而開啟物理模擬無效,方案是拖入一個非常小的網格,新建一個盒體筆刷,大小調到0.1,然后點擊創建靜態網格體,生成一個smallcube,將這個smallcube設置為武器基類的root靜態網格體的網格,這樣就可以激活物理模擬
觸發
觸發條件
和碰撞的條件類似,但是只要有一方對另一方的通道設置為重疊或阻擋即可
注意,是指響應觸發事件的網格體的通道設置,其他網格體的設置不會影響觸發結果