1. 程式人生 > >【UE4】 第13講 StaticMeshActor下落過程解析

【UE4】 第13講 StaticMeshActor下落過程解析

(版權宣告,禁止轉載)

                                              友情提示:【汽車架構解析】專欄已開始更新


                                              


                                                     

                                                                 


    執行起來Cube自然落到地板上

    整個過程表面上很簡潔直觀

    但是要透徹的理解這個過程,還是對UE4框架的掌握有要求的

                <1> Actor的位置position和旋轉rotation在哪裡儲存

                              


              <2> Actor的位置position和旋轉rotation在哪裡更新

                   ---實際是更新 USceneComponent的ComponentToWorld成員


              <3> 配置的物理相關引數對應於程式裡的哪個部分

                               

            <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上水平滑動,如何調節摩擦力大小來改變滑動長度


                          友情提示:【汽車架構解析】專欄已開始更新