我正在創建第三人稱動作遊戲,其中玩家是直升機,他可以在移動時拍攝其他物體。問題是我正試圖找到位於相機中心的圓圈內的敵方物體,我需要跟蹤它們並拍攝它們。碰撞檢測Unity3d中某些相機區域中的物體
Raycast不會幫助,因爲我需要更厚的raycast,所以我嘗試了spherecast和insulecast。 我有一個GUI元素,可以讓玩家想到他可以射擊的位置。當使用Spherecast或Capsulecast時,當敵人靠近但當敵人遠遠落後時,它正在工作,我猜球形投影變小時沿着z行進,並且不會大多數時間都不會擊中對象。
if (Physics.SphereCast (startPoint, 1f, transform.forward, out hit)) {
if (hit.collider.CompareTag ("Shootable")){
Debug.Log(hit.collider.name);
Destroy(hit.collider.gameObject);
}
}
我從相機光線投射看見,所以我在想,如果有什麼做的像從相機這將是適宜的circlecast。如果不是,我該怎麼辦?
任何幫助真的很感激。
如果您希望檢測相機視口中錐形區域內的敵人,而不是使用球體/射線照相,則可以嘗試檢查相對於相機前方的敵方位置角度向量。 (摘自[這個統一的答案](http://answers.unity3d.com/questions/261539/how-to-make-a-raycast-have-a-waider-range-of-hit.html)。) – Serlite
謝謝回覆。爲了做到這一點,我們必須遍歷相機中可見的所有敵人。如果我在場景中有很多敵人......不會影響性能,因爲我必須在更新 –
中運行這個嗯,敵人的預期/最大數量是多少個數量級?這可能仍然值得嘗試,看看你的表現問題是否有效。 – Serlite