2017-08-26 75 views
0

我有一個帶槍的2D角色,我想舉例說明他的鏡頭與其他東西碰撞的爆炸。Unity Raycast2D只拍攝1個單位

我認爲這樣做的最好方法是在JavaScript中使用Raycast2D。

var hit: RaycastHit2D = Physics2D.Raycast(transform.position, Vector2.right); 
if (hit.collider != null){ 
    boomClone2 = Instantiate(boom, new Vector3(hit.point.x, hit.point.y, transform.position.z - 1), Quaternion.identity); 
} 

現在的問題是我火,爆炸實例總是喜歡一個單位在我的性格面前,就算有什麼也沒有。我不知道爲什麼。

+0

*「實際上我的角色總是像一個單位一樣,即使這裏沒有任何東西。」*您能解釋一下嗎?也許是你正在談論的一個截圖...... – Programmer

+0

它看起來像這樣:CHARACTER___________ _______________ ENEMY – helpme

+0

它並沒有在敵人身上實例化,它只是在角色前實例化幾個單位 – helpme

回答

2

您應該更改raycast的來源。或者您可以爲玩家創建新圖層。並在光線播放時排除該圖層。

RaycastHit2D hit = Physics2D.Raycast (transform.position, Vector2.right, ~(LayerMask.GetMask ("player"))); 
4

最大的問題是,你是而不是即使在實例化任何東西之前檢查raycast命中的對象。這是錯誤的。 raycast可以打到它前面的任何東西。任何與碰撞2D。它甚至可以擊中角色本身。

創建一個「Enemy」標籤將你的敵人置於該標籤中。當光線預報不是null時,確保在實例化任何東西之前實際擊中敵人。

if (hit.collider != null) 
{ 
    if (hit.collider.CompareTag("Enemy")) 
    { 
     boomClone2 = Instantiate(boom, new Vector3(hit.point.x, hit.point.y, transform.position.z - 1), Quaternion.identity); 
    } 
} 

就像我說的,在光線投射甚至可以打到本身尤其是當2D光線投射完成。如果出現問題,請參閱this帖子以瞭解如何解決此問題。