簡體   English   中英

團結 | 如何使用復合碰撞檢測使多個對象工作?

[英]Unity | How to get multiple objects with Compound Collision Detection to work?

我目前正在嘗試使用碰撞檢測進行目標選擇(自動攻擊)。 我有兩個對象(即一個玩家和一個塔),每個游戲對象都有一個對象層次結構:

對象層次結構

在這里,對象有一個:

  • 目標球體用於提醒自身,當另一個物體進入該球體時,將其游戲狀態從空閑狀態更改為攻擊模式。
  • Hit Sphere 是物體受到傷害/與其他物體接觸的基本碰撞盒 目標球。
  • 選擇球體不與其他球體交互,而是用戶可以選擇對象的半徑。

基於此,我將每個子對象設置為具有球體碰撞器,並設置為與球體類型相對應的層。 下面是當前使用的物理碰撞表。 我只希望 HitBox 層和目標層相互交互。

物理碰撞層 塔球層

盡管我盡了最大的努力,但在運行游戲並讓玩家在球體中來回走動時,從未調用OnTriggerEnter() 此方法位於父游戲對象上的玩家和塔類中。 目前我在玩家或塔上都沒有剛體,但在玩家和塔的命中球體上都有觸發器來觸發彼此OnTriggerEnter()

到目前為止,我已經嘗試過:

  • 將剛體添加到兩個父對象中的一個或兩個
  • 將剛體添加到與我正在測試碰撞的 HitSphere/Target Sphere 相對應的一個或兩個子對象。
  • 切換目標球層和命中球層的層順序
  • 切換目標球體以使用觸發器而不是命中球體。
  • 讓目標球和命中球都成為觸發器。
  • 手動移動對象進行碰撞而不是依賴當前的移動系統。

最后,這是兩個物體碰撞的圖像,每個物體都在彼此的球體內,但沒有調用彼此的OnTriggerEnter() Cylinder 輪廓來自 NavMeshAgent Controller,我也嘗試刪除和測試,但也無濟於事。 :(

球體的交集不起作用

TL;DR:嘗試對多個游戲對象進行復合碰撞檢測但無濟於事。

答案實際上隱藏在您的問題中。

這里找到的 Unity 文檔:

注意:兩個游戲對象都必須包含一個碰撞器組件。 必須啟用 Collider.isTrigger,並包含剛體。 如果兩個游戲對象都啟用了 Collider.isTrigger,則不會發生碰撞。 當兩個游戲對象都沒有剛體組件時,同樣適用。

但根據你的帖子:

目前我在玩家或塔上都沒有剛體,但在玩家和塔的命中球體上都有觸發器來觸發彼此的 OnTriggerEnter()。

因此,最快的解決方法聽起來像是在您的塔中添加一個剛體。 您也可以向您的播放器添加一個,但請確保您的碰撞矩陣將播放器排除在環繞觸發球體碰撞器之外。

最后,根據文檔,觸發器不會被另一個觸發器觸發。

解決這些問題,您應該會看到您期望的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM