標籤:style blog http 使用 io strong ar 2014 art
碰撞與休眠
上一篇筆記說過,當給予遊戲對象剛體這個組件以後,那麼這個組件將存在碰撞的可能性。一旦剛體開始運動,那麼系統方法便會監視剛體的碰撞狀態。一般剛體的碰撞分為三種:進入碰撞,碰撞中,和碰撞結束。關於休眠能夠理解成為讓遊戲對象變成精巧狀態。假設給某個遊戲對象休眠的狀態,那麼這個物體將立刻精巧,不再運動。
碰撞
首先學習下碰撞幾個重要的方法:
OnCollisionEnter( ):剛體開始接觸的時候,馬上調用。
OnCollisionStay( ):碰撞過程中,每幀都會調用此方法,直到撞擊結束。
OnCollisionExit( ):碰撞停止時,調用。
給代碼(下面代碼僅僅是整個範例中的一部分,假設須要重建項目,我寫完整個unity入門就上傳全部的代碼):
using UnityEngine;using System.Collections;public class CollisionTest : MonoBehaviour {//碰撞顯示資訊string show = null;void Start () {//預設顯示內容show = "未發生碰撞";}//進入碰撞void OnCollisionEnter(Collision collision){show = "進入碰撞,碰撞名稱:" + collision.gameObject.name;}//碰撞中void OnCollisionStay(Collision collision){show = "碰撞中,碰撞名稱:" + collision.gameObject.name;}//碰撞結束void OnCollisionExit(Collision collision){show = "碰撞結束,碰撞名稱:" + collision.gameObject.name;//碰撞結束後讓物體休眠collision.gameObject.rigidbody.Sleep();}void OnGUI(){//將碰撞資訊顯示出來GUI.Label(new Rect(100,0,300,40),show);}}
碰撞器
遊戲對象假設須要感應碰撞,那麼就必須為其加入碰撞器。預設情況下,建立遊戲對象時,會自己主動將碰撞器組件加入當中,而碰撞器組件決定了模型碰撞的方式。unity提供了5種碰撞器,各自是:box collider(盒子碰撞器),sphere collider(球體碰撞器),capsule collider(膠囊碰撞器),mesh collider(網格碰撞器),wheel collider(車輪碰撞器)。當中box collider(盒子碰撞器)適用與立方體對象之間的碰撞,sphere collider(球體碰撞器)適用於球體對象之間,capsule collider(膠囊碰撞器)適用於膠囊體對象之間,mesh collider(網格碰撞器)適用於自己定義模型自身網格決定,wheel collider(車輪碰撞器)適用於車輪與地面或者其它對象之間的碰撞。
加入碰撞器
在導覽功能表條裡選擇component——physics然後選擇種類。
物理材質
物理材質可設定物體的表面材質,不同的表面材質可影響碰撞後的物理效果。物理材質可加入不論什麼碰撞器中。首先得匯入物理材質的資源,能夠選擇匯入系統提供的標準包。import——physic materials。在標準包中提供5種經常使用的材質:bouncy(彈性),ice(冰),metal(金屬),rubber(橡膠),wood(木質)
,給球加入了彈性材質,那個球在下落的時候接觸地面變會彈回去。
除了unity標準資源套件裡的5個物理材質,也能夠自行建立物理材質。在project視圖中點擊create——physic material就可以。例如以:
dynamic friction:動態摩擦,取值在0到1之間,0最小,1最大。
static friction:靜態摩擦,取值在0到1之間,0最小,1最大。
bounciness:碰撞反彈係數,取值在0到1之間,0最小,1最大。
friction combine:普通碰撞後的摩擦模式。
bounce combine:反彈碰撞後的摩擦模式。
friction direction 2:摩擦方向,方向分X軸,Y軸,Z軸。
dynamic friction 2:動摩擦係數,摩擦方向依據friction direction 2設定。
static friction 2:靜摩擦係數,摩擦方向依據friction direction 2設定。
【Unity 3D】學習筆記三十七:物理引擎——碰撞與休眠