Unity物理引擎系統里兩個常用組件 RigidbodyCollider_第1頁
Unity物理引擎系統里兩個常用組件 RigidbodyCollider_第2頁
Unity物理引擎系統里兩個常用組件 RigidbodyCollider_第3頁
Unity物理引擎系統里兩個常用組件 RigidbodyCollider_第4頁
Unity物理引擎系統里兩個常用組件 RigidbodyCollider_第5頁
已閱讀5頁,還剩3頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Unity物理引擎系統里兩個常用組件- Rigidbody、Collider什么是Collider碰撞器組件在Unity引擎中觸發物理碰撞的最基本的條件??梢赃@樣說,假如一個游戲中沒有物理碰撞系統是不可能的。什么是Rigidbody通過物理模擬的控制對象的位置。Rigidbody組件添加到一個對象將其運動的控制下統一的物理引擎。即使沒有添加任何代碼,Rigidbody對象將由重力向下拉,將反應與傳入的對象如果正確的對撞機碰撞組件也存在。Rigidbody也有腳本API,允許您力量應用于對象和物理現實的方式控制它。例如,一輛汽車的行為可以指定在力量方面應用的輪子。鑒于這種信息,物理引擎可以處理大

2、多數汽車運動的其他方面,所以它將加速實際和正確應對沖突。   通常會在腳本的FixedUpdate函數中改變Rigidbody設置。原因是防止在更新時時間不配合幀更新的步驟。FixedUpdate稱為每個物理之前立即更新,所以任何更改將會有直接處理。開始使用Rigidbody時常見的問題是,游戲中模擬的物理系統似乎在“慢運動”運行。這實際上是由于規模用于您的模型。默認的重力設置假設一個世界單元對應于一米的距離。與非現實的游戲,是沒有多大的區別,如果您的模型都是100單位長但使用物理時,他們將被視為非常大的對象。如果大規模用于對象應該是小,他們似乎會非常緩慢物理引擎認為他們非

3、常大對象摔倒非常大的距離??紤]到這一點,一定要保持你的對象在現實生活中或多或少的規模(所以汽車應該大約4單位= 4米)。 Collider的用法碰撞器常用的方法· OnCollisionEnter/當另一個游戲對象的剛體或者碰撞器,碰撞到本游戲對象的碰撞器組件時,會調用這個方法.Collider.OnCollisionEnter(Collision) 例如:123456void OnCollisionEnter(Collision collision)         /遍歷

4、碰撞到該游戲對象的碰撞器組件的所有對象.        foreach (ContactPoint contact in collision.contacts)             Debug.DrawRay(contact.point, contact.normal, Color.white);     

5、0;        · OnCollisionExit12/當另一個游戲對象已經離開當前游戲對象的剛體或者是碰撞器組建時會調用這個方法.Collider.OnCollisionExit(Collision)· OnCollisionStay12/當另一個游戲對象的碰撞器一直停留在當前游戲對象上的剛體或者碰撞器時,會調用這個方法.Collider.OnCollisionStay(Collision) 注意:當把碰撞器Collisider組件的觸發器屬性設置為true時,在腳本中會調用如下

6、三個方法· OnTriggerEnter12/需要注意的是,觸發器回調方法的參數是Collider類型Collider.OnTriggerEnter(Collider)· OnTriggerExit1Collider.OnTriggerExit(Collider)· OnTriggerStay1Collider.OnTriggerEnter(Collider) Rigidbody的用法Rigidbody的成員變量 成員變量名稱成員變量的作用angularDrag游戲對象對應的角阻力angularVelocity游戲對象的角速度向量 c

7、enterOfMass相對于游戲對象自身的坐標系統的重心位置collisionDetectionMode游戲對象剛體組件的碰撞檢測模式constraints用來約束游戲對象在某些條件上是可以自由跟隨Unity物理系統移動的detectCollisions是否啟用游戲對象的碰撞檢測功能。默認都是開啟的。drag游戲對象在運動時的阻力freezeRotation用來約束游戲對象是否會被Unity物理系統影響自身的旋轉isKinematic用來控制游戲對象的剛體是否會收到Unity物理系統的影響mass用來表示游戲對象剛體的質量maxAngularVelocity用來表示游戲對象的最大角速度posi

8、tion游戲對象剛體組件所處在的位置坐標rotation游戲對象剛體組件已經產生的坐標旋轉sleepAngularVelocity用來表示當游戲對象的角速度小于臨界值時就停止。默認值0.14sleepVelocity用來表示當游戲對象的運行速度小于臨界值時就停止。默認值0.14useGravity用來表示當前游戲對象是否收到重力系統的影響velocity用來表示當前游戲對象的剛體的運行速度worldCenterOfMass相對于世界的坐標系統的重心位置在Unity開發工具中使用到的組件接口面板Rigidbody常用的方法· AddForce12/為rigidbody添加一個方向力。因

9、此,rigidbody將開始移動。void AddForce(Vector3 force, ForceMode mode = ForceMode.Force);例如:1234/在FixedUpdate函數中,為rigidbody添加10個單位向上的方向力void FixedUpdate()         rigidbody.AddForce(Vector3.up * 10); · AddForceAtPosition12/在一個位置為Rigidbody添加一個力.void&

10、#160;AddForceAtPosition(Vector3 force, Vector3 position, ForceMode mode = ForceMode.Force);例如:1234567/ApplyForce函數是個自定義函數,用來對一個剛體對象施加一個方向力void ApplyForce(Rigidbody body)         /計算當前游戲對象和剛體參數游戲對象所處位置的方向        Vect

11、or3 direction = - transform.position;        /在當前游戲對象所處的位置,為body參數施加1個單位的方向力        body.AddForceAtPosition(direction.normalized, transform.position);    · AddTorque12/為剛體組件添加一個力矩,使該游戲對象產生旋轉的速度.v

12、oid AddTorque(Vector3 torque, ForceMode mode = ForceMode.Force);例如:1234/為游戲對象添加一個10個單位的旋轉力.void FixedUpdate()         rigidbody.AddTorque(Vector3.up * 10);形成的效果如下 · AddRelativeTorque12/添加一個扭矩rigidbody相對rigidbody自身的坐標系統void AddRelativeTorque(Vector3 torque, ForceMode mode = ForceMode.Force);例如:12345/相對于游戲對象自身的坐標系統,添加

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論