1. 程式人生 > >unity碰撞檢測和觸發資訊

unity碰撞檢測和觸發資訊

兩個物體發生碰撞,如果要檢測到碰撞資訊,那麼其中必有一個物體既帶有碰撞器,又帶有剛體,且檢測碰撞資訊的指令碼必須附著在帶有剛體的碰撞器上。

兩個GameObject發生碰撞,要想檢測到觸發資訊,最少要有一個剛體碰撞器並且勾選了IsTrigger複選框,另一個最少要有一個碰撞器元件,此時檢測碰撞的指令碼必須附加在那個帶有剛體的觸發器上。

這兩句結論是別人實驗的結果,而在我使用的過程中,並沒有這麼複雜的操作,我製作了一個capsule和一個cube,雙方都添加了碰撞器和剛體,給capsule新增如下程式碼:

using UnityEngine;
using System.Collections;

public

classNewBehaviourScript:MonoBehaviour{

//Usethisfor initialization
voidStart(){

}

//Updateiscalledonceper frame
voidUpdate(){
transform.Translate(Vector3.forward*5f*Time.deltaTime);

}

publicvoidOnCollisionEnter(Collisioncollision)
{
Destroy(collision.gameObject);
}
}



執行結果是capsule撞到了方塊後方塊消失,capsule受到力作用前進方向改變。這也就是說既實現了碰撞效果又檢測到了碰撞資訊,而我之所以會檢視碰撞器的問題,是因為我之前寫的OnCollisionEnter函式中檢測了Collision.Collider.tag=“XXX”,這樣寫在pc端可以正常執行,釋出到安卓就會檢測不到碰撞資訊,所以走了很多彎路,查詢了很多資料。

那麼觸發資訊在我這個例子中就不需要了(OntriggerEnter),我原本以為觸發資訊就是給碰撞效果新增的響應函式,原先覺得很矛盾,因為如果有觸發資訊就不會有碰撞效果(添加了istrigger後物體會直接穿過彼此),現在明白這種是為了實現沒有物理碰撞效果的碰撞檢測,例如自動門,就是不碰撞到門但門會自己開啟。所以平常我所需要的都是OnCollisionEnter(),實現既有物理碰撞效果(capsule被撞飛),又有碰撞資訊(cube消失)。

相關推薦

unity碰撞檢測觸發資訊

兩個物體發生碰撞,如果要檢測到碰撞資訊,那麼其中必有一個物體既帶有碰撞器,又帶有剛體,且檢測碰撞資訊的指令碼必須附著在帶有剛體的碰撞器上。 兩個GameObject發生碰撞,要想檢測到觸發資訊,最少要有一個剛體碰撞器並且勾選了IsTrigger複選框,另一個最少要有一個碰撞

unity碰撞檢測觸發器的方法函式

碰撞檢測涉及三個函式: 當與物體碰撞的一瞬間:OnCollisionEnter(Collision  collision),collisionInfo是撞到的物體的碰撞資訊; 當在與物體持續碰撞接觸期間:OnCollisionStay(Collision collisio

Unity學習筆記(二) 碰撞檢測觸發檢測

正好看到了Roll a ball這個遊戲,於是就溫故一下碰撞檢測和觸發檢測 1.前期準備 中間省去建造一些基礎的物體的過程,最後呈現如下圖 我們的主角就是中間的球體 其GameObject名為player,我們在其身上添上剛體元件(Rigidbod

Unity碰撞檢測小結

兩個碰撞體發生碰撞所需條件: 1. 兩個物體所在的層(layer),在物理層上能夠發生碰撞 2. 兩個物體均需要碰撞體(Collider)元件,最少一方需要剛體(Rigidbody) 碰撞函式: void OnCollisionStay(Collision info)

uninty3d之發生碰撞事件觸發事件條件

總結:要發生碰撞事件(雙方都能收到) 1 去碰撞的物體包括剛體和碰撞體 2 被撞的物體包括碰撞體       要發生觸發事件(雙方都能收到)      1 去碰撞的物體包括剛體和碰撞體,被碰的物體包含碰撞體即可      2 去碰撞的物體或者被碰物體其中一個

cocos2dx 精靈的碰撞檢測消滅(3)

在上一篇的基礎上增加了一點內容,必要的註釋都寫在程式碼裡了,,就直接貼程式碼吧,我也懶得寫詳細的過程。 HelloWorldSence.h #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #in

Unity 碰撞剛體的區別(應用)

很多初學者都會問這麼一個問題,那就是碰撞體和剛體到底有什麼區別,以及如何應用 兩句話概括碰撞體: 碰撞體才能被射線檢測到,否則無法被檢測 碰撞體是產生碰撞的前提 兩句話概括剛體: 需要模擬重力的自由下落時,新增剛體 物體間發生碰撞時,主動體

Unity3D碰撞檢測OnTriggerEnter用法

在目前掌握的情況分析,在Unity中參與碰撞的物體分2大塊:1.發起碰撞的物體。2.接收碰撞的物體。1. 發起碰撞物體有:Rigodbody , CharacterController .2. 接收碰撞物體由:所有的Collider .工作的原理為:發生碰撞的物體中必須要有“

11. 碰撞檢測收集物品:如何使用cocos2d製作基於tiled地圖的遊戲:第二部分

免責申明(必讀!):本部落格提供的所有教程的翻譯原稿均來自於網際網路,僅供學習交流之用,切勿進行商業傳播。同時,轉載時不要移除本申明。如產生任何糾紛,均與本部落格所有人、發表該翻譯稿之人無任何關係。謝謝合作! 程式截圖: 這篇教程是《如何使用cocos2d製作基

Unity碰撞檢測

歡迎來到unity學習、unity培訓、unity企業培訓教育專區,這裡有很多U3D資源、U3D培訓視訊、U3D教程、U3D常見問題、U3D專案原始碼,我們致力於打造業內unity3d培訓、學習第一品牌。        在unity3d中,能檢測碰撞發生的方式有兩種,一種是

OnTriggerEnter與Rigidbody-Unity碰撞檢測

寫在前面的話 用unity做開發碰撞的檢測是經常要用到的,但是有時候會發現碰撞不起作用,小弟頗為疑惑。於是做了個小小的實驗來探討一下。 Unity為4.6.3 Rigidbody元件 常用的 1.Mass 指定GameObject質量

Unity觸發檢測碰撞檢測

void OnCollisionEnter(Collision col) { Debug.Log("開始碰撞" + col.collider.gameObject.name); } void OnCollisionStay

Unity使用之預設體&滑鼠事件&剛體&碰撞觸發事件

預設體:        預設體能夠使遊戲物件和資源重複使用,相同的遊戲物件可以使用同一個預設體來建立,對預設體進行修改後,所有遊戲物件都會相應改變。 遊戲物件預設體的建立:         在SampleScene中建立一個3D模型,命名player,然後在Asse

canvas遊戲動畫中的碰撞檢測

底部 bsp rect circle 進行 eight nbsp odi word 碰撞檢測關鍵步驟 碰撞檢測需要處理經歷下面兩個關鍵的步驟: 計算判斷兩個物體是否發生碰撞 發生碰撞後,兩個物體的狀態和動畫效果的處理 計算碰撞 只要兩個物體相互接觸,它們就會發生碰撞

利用jsplumb碰撞檢測自動生成流程圖

for ans ont != 500px cat clone tran tex 使用jsplumb構建流程圖模型時,有一個需求要求,選項可以從選項表中拖拽到指定容器,並且兩個選項要接觸到的時候才能連接起來,不接觸不能連接。效果圖如下 略醜~ 因為這裏用到了拖拽,拖放功

Unity + Spine 碰撞檢測

靈活 進行 目前 創建 頂點 發的 要去 del box 通過自己在開發的遊戲過程中發現有幾種做碰撞檢測的方法:1. 只在unity中添加collider這是最簡單的一種。在Spine中編輯好骨骼動畫以後導入到unity中,讓後spawn bone就可以得到在Spine中的

Unity3D 網格碰撞器Mesh Collider之間原型碰撞器(Box Collider等)的碰撞檢測

There are some limitations when using the Mesh Collider. Usually, two Mesh Colliders cannot collide with each other. All Mesh Colliders can co

【JavaScript】實現元素拖拽碰撞檢測

function drag() { var src1 = document.getElementById("src-1"); var src2 = document.getElementById("src-2"); var src3 =

Unity碰撞檢測小結

兩個碰撞體發生物理碰撞所需條件: 兩個物體所在的層(layer),在物理層上能夠發生碰撞 兩個物體均需要碰撞體(Collider)元件,最少一方需要剛體(Rigidbody) 碰撞函式: void OnCollisionStay(Collision info

Unity 3D中的射線與碰撞檢測

在我們的遊戲開發過程中,有一個很重要的工作就是進行碰撞檢測。例如在射擊遊戲中子彈是否擊中敵人,在RPG遊戲中是否撿到裝備等等。在進行碰撞檢測時,我們最常用的工具就是射線,Unity 3D的物理引擎也為我們提供了射線類以及相關的函式介面。本文將對射線的使用進行一個總結。 射線