1.需要在碰撞物體上加collider,如果將collider的istrigger打上勾的話就可以使用如下方法:
private void ontriggerenter(collider other) //檢測函式,並將檢測的結果放入other變數中.
}離開碰撞區域的函式如下:
private void ontriggerexit(collider other1)
}如果沒有勾選istrigger的話使用oncollisionenter方法
注意:
oncollisionenter方法必須是在兩個碰撞物體都不勾選istrigger的前提下才能進入,反之只要勾選乙個istrigger那麼就能進入ontriggerenter方法。
oncollisionenter方法要求碰撞的發起方必須擁有剛體,而被碰撞方有沒有剛體並不重要。ontriggerenter方法則對此沒有要求,只需要碰撞雙方有乙個具有剛體即可觸發。即剛體是乙個判斷是否實現碰撞的是與否的標誌。
2.射線檢測
①滑鼠發出射線
ray ray = camera.main.screenpointtoray(input.mouseposition);
raycasthit hit;
if (physics.raycast(ray,out hit))
②物體發出射線
ray myray = new ray(transform.position, (transform.position + transform.forward * 3));
raycasthit hit; //建立raycasthit型變數,用於存放射線碰撞資訊
//發設一條射線,myray距離3長,碰撞到的物體資訊存放在hit中,放在下面進行判斷。
if (physics.raycast(myray,out hit,3))}}
3.使用physics.overlapbox來判斷碰撞
exp:
vector3 modelorgin1 = model.transform.position;
vector3 modelorigin2 = modelorgin1 + new vector3(0, 1, 0);
vector3 boxcenter = modelorigin2 + model.transform.forward * 5.0f;
collider cols = physics.overlapbox(boxcenter, new vector3(0.5f, 0.5f, 5f), model.transform.rotation, layermask.getmask(isai?「player」:「enemy」));
if (cols.length == 0)
else
foreach (var col in cols)
lockprocessa(new locktarget(col.gameobject, col.bounds.extents.y),true,true,isai);
= camera.main.worldtoscreenpoint(locktarget.transform.position);
break;}}
備註:見官方文件
4.取得遊戲物件上 charactercontroller元件的控制權,再利用碰撞語句檢測是否發生碰撞.**如下:
bool grounded=false;
void upda()
unity3d碰撞檢測
具體的一些,可以看 unity3d的 manual refrernce的東西,有幾個 在後面可以參考 幾個型別碰撞器 1.靜態碰撞器 就是只有碰撞器,但沒有剛體的 2.剛體碰撞器 帶rigidbody的碰撞器,這個是最基本的碰撞器 3.運動學剛體碰撞器 帶rigidbody,而且rigidbody的...
Unity3d 碰撞檢測
unity3d 主要由trigger和collison 兩種碰撞檢測 1 檢測trigger 雙方都有collider。雙方至少有乙個rigidbody 任意一方都可以 有乙個trigger 任意一方都可以 若只有乙個rigidbody,則碰撞時,該rigidbody一定要是運動的。碰撞後發出的on...
Unity 3D碰撞檢測
被呼叫的函式 碰撞器與觸發器 被呼叫的函式 以上兩個碰撞不能將各自的函式或引數改變,否則將出現以下錯誤 在unity3d中節點加入某某collider 2d元件則這個節點就是碰撞器 碰撞器分類 1.box collider 2d 矩形碰撞器 2.circle collider 2d 圓形碰撞器 3....