當玩家在靠近物體時碰到某個鍵時,我需要在每個預製件上觸發一個觸發器。我還需要在預製件和播放器的每個實例之間進行碰撞。在預製件上選擇「正在觸發」時,我似乎只能找到一個工作。處理這個問題的正確方法是什麼?需要在同一預製件上發生碰撞和觸發
0
A
回答
1
而不是在對象上使用觸發器,使用Physics.OverlapSphere
可以找到範圍爲的所有對象,當玩家按下鍵,然後在對象的腳本中執行一個函數。
觸發事件:
void Update() {
if (Input.GetKeyDown("space"))
{
ApplyEffect(transform.position, RADIUS);
}
}
RADIUS
是所期望的接近玩家
方法1:
void ApplyEffect(Vector3 center, float radius)
{
Collider[] hitColliders = Physics.OverlapSphere(center, radius);
int i = 0;
while (i < hitColliders.Length)
{
hitColliders[i].gameObject.GetComponent<SCRIPT_NAME>().EFFECT_FUNCTION();
i++;
}
}
SCRIPT_NAME
是目標對象上腳本的名稱。
EFFECT_FUNCTION
是腳本中函數的名稱。
方法2:
使用通訊系統上類似於在文檔示例中示出的功能的對象執行功能:該第一[如何的應答( https://docs.unity3d.com/ScriptReference/Physics.OverlapSphere.html
1
當玩家靠近並擊中某個鍵時,您可以在物體上使用界面。碰撞可以由對象碰撞器處理,是否有一個特定的原因需要成爲觸發器?檢查this出來,可能會清除一些isTrigger問題。
相關問題
- 1. 碰撞觸發動畫
- 2. 碰撞發生時,從nsuserdefaults
- 3. 簡單的碰撞檢測在cocos2d box2d..nothing發生在碰撞
- 4. 碰撞觸發器似乎總是碰撞
- 5. Box2D |禁用動態物體碰撞,同時仍然觸發ContactListener碰撞
- 6. 隨機數發生器碰撞測試中碰撞太多
- 7. [物理] [2D] [碰撞]發生碰撞後應該怎麼辦
- 8. 檢測到libgdx傳感器發生碰撞,但條件代碼未被觸發
- 9. 發生碰撞時移除物體
- 10. 哈希集如何發生碰撞?
- 11. HttpRequest.GetHashCode()實現 - 碰撞發生的頻率?
- 12. 如何使HTML5 Canvas發生碰撞?
- 13. 如果發生碰撞請求Box2d
- 14. 我的節點沒有發生碰撞
- 15. XNA - 碰撞永遠不會發生
- 16. 隨機數發生器碰撞
- 17. 當很多精靈發生碰撞時發生修復錯誤
- 18. 碰撞檢測只發生在屏幕上方
- 19. 一個碰撞需要多少個樣本(生日悖論)
- 20. 在swift 3 sprite套件中發生碰撞Xcode 8
- 21. oracle觸發器摧毀命令(碰撞和deadclock)
- 22. 偶發性碰撞檢測
- 23. ThreeJS與PhysiJS物理引擎沒有觸發碰撞事件
- 24. Java控制檯同時記錄到無需碰撞的線上
- 25. 如何在輸入另一個碰撞器的觸發器時禁用碰撞器?
- 26. 如何在玩家碰撞地面時停止觸發動畫?
- 27. 我需要碰撞,使一個對象坐在另一個AndEngine
- 28. Unity3D碰撞需求
- 29. Ai在發生碰撞時始終在旋轉
- 30. mootools和script.js在同一頁面上的碰撞
請參閱HTTPS ://sackoverflow.com/help/how-to-answer) 這個問題已經回答了,顯然,你可以在這裏添加你的答案。但是在回答之前你需要了解一些觀點。首先,不要添加之前添加了相同代碼或建議的答案。其次,如果用戶非常具體地詢問了問題以及他需要解決什麼問題,請不要添加過於複雜的答案。第三,如果您想就回答或問題提出任何建議,您可以添加評論。 –