玩家和物體都有碰撞體和剛體,物體有位置和旋轉鎖定,玩家只有旋轉鎖定。當玩家走到積木時,玩家會穿過積木,盡管它們確實會產生一些阻力。要移動玩家,我需要設定剛體的速度,并在 FixedUpdate 中執行此操作。我不知道為什么會這樣,有什么想法嗎?
代碼的主要部分是:(
rigidBody.velocity = new Vector3(direction.x, rigidBody.velocity.y (-Gravity * Time.deltaTime), direction.z);
方向由 WASD 鍵決定,我使用自己的重力)
uj5u.com熱心網友回復:
我想這與檔案所說的“在大多數情況下你不應該直接修改速度有關,因為這會導致不切實際的行為”。
嘗試使用AddForce()或類似函式來改變剛體的屬性。碰撞器等將按預期作業。
uj5u.com熱心網友回復:
首先,您不需要將速度乘以時間.DeltaTime,因為您是在 FixedUpdate() 方法中移動您的物件;它使用固定的時間間隔,因為物理引擎與常規游戲引擎不同步運行。此外,兩個物體都不需要剛體來相互碰撞。我建議在設定中查看您的碰撞矩陣并驗證您需要碰撞的所有內容都已正確檢查。正如其他人所說,請檢查剛體上的運動學。
關于使用自己的重力的最后一個建議。不要改變游戲引擎的實際重力值。通常建議您使用乘數變數并將其應用于物理引擎已經設定的恒定重力。如果您要完全編輯重力,則可以考慮使用角色控制器代替。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/332870.html
標籤:统一3d
上一篇:使for回圈等待用戶輸入
下一篇:在回圈中使用協程
