我在Unity製作戰鬥機遊戲。當我打拳時,我需要找到一種方法讓Unity檢測到我是否擊中了對手。問題是我似乎沒有辦法這樣做。 沒有辦法讓它檢測網格是否互相接觸或者是更好的方法。Unity3D戰鬥機遊戲 - 戰鬥機擊中對手[unityscript]
你有什麼想法嗎?
問候, 羅伯特·丹
我在Unity製作戰鬥機遊戲。當我打拳時,我需要找到一種方法讓Unity檢測到我是否擊中了對手。問題是我似乎沒有辦法這樣做。 沒有辦法讓它檢測網格是否互相接觸或者是更好的方法。Unity3D戰鬥機遊戲 - 戰鬥機擊中對手[unityscript]
你有什麼想法嗎?
問候, 羅伯特·丹
我會看看Physics.SphereCastAll。球體鑄造類似於射線鑄造。考慮球體鑄造厚射線鑄造。這背後的想法是從衝頭髮出的方向將衝頭髮出的方向投射出來。如果任何碰撞者從該函數返回,那麼你知道它碰到了什麼,所以你只需要檢查它碰到的是否滿足正確的條件(即是另一個玩家)。
最明顯的解決方案是將網格對撞機和運動學剛體添加到您正在攻擊的網格中,並使用OnCollisionEnter來檢測與其他剛體的碰撞。
Yeeeaah,那個穿過我的腦海,但我有字符控制器有我的角色膠囊對撞機,它似乎不能使用網狀對撞機和/或剛體 – 2013-04-12 12:21:23
你能提供有關情況的更多細節?誰使用角色控制器,攻擊者或防禦者?你有一個單獨的gameObject(如手或腿),你想檢測碰撞? – 2013-04-13 11:48:44
對不起,我已經控制了一個玩家,另一個玩家應該是AI,但還沒有到達那麼遠的地步。我想我只需要我的播放器上的字符控制器,它不是分開的。這是一個鏈接到遊戲:http://nemar.tskoli.is/robertsi252/tmf3d/使用「你」打孔。它只是在測試階段,所以不要介意所有的陌生:) – 2013-04-15 23:31:35
感謝您的回答,我會試試這個!有一件事,SphereCastAll和SphereCast有什麼區別?因爲我只有一個對手,並且我在一個軸上移動,所以SphereCast也不會工作? – 2013-04-12 00:49:37
SphereCast可以讓你的玩家自己分層。 SphereCastAll返回基於所有GameObjects與SphereCast碰撞的Collider對象,而SphereCast只返回一個布爾值,我相信。就你而言,你可以將玩家A放在圖層A上,玩家B放在圖層B上(例如)。在SphereCast功能中,您只需忽略除B層之外的所有其他層。你可以通過1 << layerB來實現,其中layerB是實際的Layer索引。在LayerMask.NameToLayer的圖層文檔中(我相信)你會發現更多的信息。讓我知道更多的問題! – cmhley 2013-04-12 04:55:02
再次感謝您的回答。它工作到一定程度:)現在的問題是我使用Mecanim動畫師。 mecanim動畫師等待「打孔」動畫完成播放,但與此同時,我可以投出很多球形播放,因爲按下「打孔」按鈕時會發生這種情況。 現在,因爲Mecanim是如此的新,我無法找到很多關於javascript的信息。我正在嘗試製作一個腳本:如果我處於這種動畫狀態,請投射spherecast。 – 2013-04-22 18:27:46