腳本和物理系統的結合使用

Rigidbody(剛體)組件可使遊戲對象在物理系統的控制下來運動,剛體可接受外力與扭矩力用來保證遊戲對象像在真實世界中那樣進行運動。任何遊戲對象只有添加了剛體組件才能受到重力的影響,通過腳本爲遊戲對象添加的作用力以及通過NVIDIA物理引擎與其他的遊戲對象發生互動的運算都需要遊戲對象添加了剛體組件。

Rigidbody介紹

這裏寫圖片描述

Mass 質量
Angular Drag 角阻力
可用來減緩物體的旋轉。阻力越高旋轉越慢。
Use Gravity 是否使用重力
Is Kinmatic 是否使用運動學
如果Use Gravity和Is Kinmatic同時勾選的話,那麼Is Kinmatic的優先級比Use Gravity要高
Interpolate
Collision Detection 碰撞檢測
Constraints 約束
Freeze Position 凍結位置
Freeze Rotation 凍結旋轉

碰撞器

盒子碰撞器 BoxCollider
球形碰撞器 SphereCollider
膠囊碰撞器 CapsuleCollider
【注意】膠囊體和圓柱體的碰撞器都是CapsuleCollider

碰撞檢測的條件

兩個物體要想發生碰撞兩者必須都有Collider組件,主動方必須要有剛體組件
//collision指的是和綁定此腳本遊戲對象發生碰撞的遊戲對象
//OnCollisionEnter在兩個遊戲對象發生碰撞的時候出發 一次碰撞只出發一次
private void OnCollisionEnter(Collision collision)
{
Debug.Log(“開始發生碰撞”+ collision.collider.name);
}
//OnCollisionStay在兩個遊戲對象碰撞過程中執行 一次碰撞大約執行20次左右
private void OnCollisionStay(Collision collision)
{
Debug.Log(“發生碰撞中”);
}
//OnCollisionExit在兩個遊戲對象從接觸狀態開始分離的那一刻執行 再離開的瞬間 只執行一次
private void OnCollisionExit(Collision collision)
{
Debug.Log(“準備結束碰撞”);
}

觸發器

其實就是碰撞器中,在檢測觸發的遊戲對象上Collider組件中勾選IsTrigger就行了。這樣的話,兩個遊戲對象就可以此相互穿越。

//other表示的是和綁定此腳本的遊戲對象發生碰撞的遊戲對象
//在兩個遊戲對象接觸的時候執行
private void OnTriggerEnter(Collider other)
{
Debug.Log(“開始進入”+ other.gameObject.name);
}
//在兩個遊戲對象有交集的時候執行
private void OnTriggerStay(Collider other)
{
Debug.Log(“進入” + other.gameObject.name);
}
//在遊戲對象相互分開的時候有交集
private void OnTriggerExit(Collider other)
{
Debug.Log(“準備出來” + other.gameObject.name);
}
Force系列方法
Rigidbody.AddForce
Rigidbody.AddRelativeForce

Toque系列方法
Rigidbody.AddTorque
Rigidbody.AddRelativeTorque

物理射線Ray

RaycastHit
Physics.Raycast

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章