![](/img/trans.png)
[英]Collision Detection in Child Colliders, From Parent Object (Unity3D)
[英]Unity - How to detect collision on a child object from the parent GameObject?
我正在使用Unity 5進行2D游戲,我遇到了兒童GameObject對撞機的問題。 我想檢測Child GameObject與另一個對象之間的沖突,從父腳本執行此操作並使用標記。
按照下面的父腳本:
void OnCollisionEnter2D(Collision2D hit) {
if(hit.transform.tag == "Enemy"){
this.playerRigidbody.AddForce(new Vector2(0, this.forceJump));
}
}
“Enemy”標簽是另一個與我的玩家孩子的碰撞器碰撞的物體。 我想檢測子對象和另一個對象之間的沖突,我在很多類似的論壇中搜索過關於Unity但我無法解決我的問題。 有人可以幫我解決這個問題嗎?
發生沖突時,Unity將在層次結構中搜索最近的Rigidbody並在同一GameObject上運行任何腳本。
因此,簡單的方法是使用腳本確保剛體在父對象上。 這是一個示例層次結構:
家長有:
B兒童有:
當盒式對撞機與某些東西發生碰撞時,該事件將直接通過Child A冒泡並被父級的Rigidbody接收,這將導致腳本運行。
出於性能原因,Unity不會將事件在層次結構中冒泡。 所以,你的其他選擇是......
向捕獲碰撞的子項添加一個腳本並在那里處理它。 如果需要,您可以將事件轉發到父腳本,如下所示:
void OnCollisionEnter2D(Collision2D hit) { // Forward to the parent (or just deal with it here). // Let's say it has a script called "PlayerCollisionHelper" on it: PlayerCollisionHelper parentScript = transform.parent.GetComponent<PlayerCollisionHelper>(); // Let it know a collision happened: parentScript.CollisionFromChild(hit); }
確保子對象沒有剛體並確保對撞器屬性正確。 看看這個在復合撞機部分文章對兒童的對象結合對撞機的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.