【UE4】 第13講 StaticMeshActor下落過程解析
(版權宣告,禁止轉載)
執行起來Cube自然落到地板上
整個過程表面上很簡潔直觀
但是要透徹的理解這個過程,還是對UE4框架的掌握有要求的
<1> Actor的位置position和旋轉rotation在哪裡儲存
<2> Actor的位置position和旋轉rotation在哪裡更新
---實際是更新 USceneComponent的ComponentToWorld成員
<4> 建立PhysicsState的條件
---UStaticMeshComponent預設會呼叫OnCreatePhysicsState建立Mesh對應的PxRigidActor
---如果不想建立對應的PxRigidActor需要設定Collision->碰撞預設定->NoCollision
<5> 如何單步跟蹤這個下落的過程
---單步跟蹤困難主要是由於UE4採用了Task佇列+多執行緒的架構,
把執行流程打散成多個Task分佈到多個執行緒裡並行
設定的EnableGravity/NoCollision會對應下面的PxActorFlag,設定進PxRigidActor
預設不勾選Simulate Physics, PhysX還是會EnableSimulation,只是不會EnableGravity
struct PxActorFlag
{
enum Enum
{
/**
\brief Disables scene gravity for this actor
*/
eDISABLE_GRAVITY = (1<<1),
/**
\brief Disables simulation for the actor.
*/
eDISABLE_SIMULATION = (1<<3)
};
};
理解清楚這個流程,對於編寫UE4相關Plugin是必須的
但是還是會有一些比較麻煩的問題存在(讀者可以嘗試自行解決)
預設Cube下落的重力加速度是自然界的值,如何修改這個值來改變下落快慢
Cube落到地面什麼情況下才會彈起,這個反彈模型又是怎樣的,如何通過相應引數調節
如果Cube在Floor上水平滑動,如何調節摩擦力大小來改變滑動長度