unity,碰撞

Hierarchy中的 Directional Light(平行光)的Intensity(強度),調整可改變光的強度(亮度)

Hierarchy中的物體 Inspector 中 Add Component—>Rigidbody(剛體)(在3D中使用,2d中使用Rigidbody 2D)

Terrain中的Terrain Collider是Terrain的碰撞器,剛體與其碰撞產生的效果與其碰撞器有關

Rigidbody中的屬性:Mass–>質量(影響物體的慣性,與其他物體碰撞時產生的力的大小),Drag—>各種類型的摩擦力,如空氣阻力,旋轉時的摩擦力等,Angular Drag—>旋轉時的摩擦力,是否使用重力等等。。Constraints中Freeze Position—>鎖定剛體沿X,Y,Z軸方向的移動,,Freeze Rotation—>鎖定剛體以X,Y,Z爲軸心的滾動。

將物體的碰撞器不進行勾選,則物體無法與剛體碰撞,剛體會穿過該物體。

碰撞器有多種,Box Collider,Capsule Collider,Sphere Collider由於頂點較少,最節約性能,優先推薦使用,Mesh Collider—>碰撞器形狀默認與物體的Mesh Filter(物體原形狀)一致,(一般頂點,網格較多,最耗費性能)

碰撞檢測函數:在Project中Create一個C# Script,在Hierarchy中選擇你要檢測其碰撞的物體,並將創建的C# Script拖拽到其Inspector中,右鍵拖拽後的Script,選擇Edit Script,在腳本代碼中添加 private void OnCollisionEnter(Collision collision){},當檢測的物體與別的物體發生碰撞時,Unity就會自動調用該函數—>【一次碰撞只會調用一次】,,如在方法體內添加輸出函數:print(“111”); 運行遊戲後,Unity右下角Console就會彈出提示消息“111”,次數爲測試的物體發生碰撞的次數—>與幾個物體發生碰撞。

碰撞產生的條件,,兩個物體都具有碰撞器,且其中至少一個物體是正常的(非Kinematic的)剛體。,,is Kinematic勾選上後剛體將靜止。

碰撞檢測函數:

private void OnCollisionEnter(Collision collision)-->僅在與物體剛開始接觸的那一幀被調用
{
    print("在此刻開始接觸");
    print(collision.collider);--->輸出被碰撞物體的碰撞器
    print(collision.collider.name);--->輸出被碰撞物體的名字
    print(collision.collider.tag);--->輸出被碰撞物體的標籤
}

private void OnCollisionStay(Collision collision)-->與物體接觸的每一幀都會被調用
{
    print("正在接觸");
}
private void OnCollisionExit(Collision collision)-->僅在與物體剛離開的那一幀被調用
{
    print("在此刻離開");
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章