我有一個腳本,我使用多個raycasts從一個對象來檢查是否有一個特定的圖層蒙版被命中,我在他們之間使用for
循環,它工作正常。如何知道是否有某物被射線擊中?
但問題是:如果光線的一個被擊中boolean
將true
,如果「所有」的光線沒有命中,boolean
將false
。但問題是我不知道如何檢查。
for (int i = 0; i < rays; i++)
{
Vector2 raysStart = raysStart.topLeft + Vector2.right * (raysSpacing * i);
RaycastHit2D hit = Physics2D.Raycast (raysStart, Vector2.up, 10, checkMask);
if (hit)
{
Debug.DrawLine (raysStart, raysStart + Vector2.up * 10, Color.red);
boolean= true;
}
else if (!hit)
{
Debug.DrawLine (raysStart, raysStart + Vector2.up * 10, Color.green);
boolean= false;
}
}
我也試圖與else
沒有else if (!hit)
和它的工作是相同的。
所以如果其中一個光線擊中另外三個光線,就會有4條光線沒有擊中,所以它總是讓我沒有擊中接受。
如果我打的最後一縷在迴路中的任何方式,因爲我的種子,如果你能告訴我怎麼做,如果從4條射線的一個射線擊中boolean
變得true
,如果所有的4線不打它變成false
。
'Physics2D.Raycast'將始終返回一個非空的'RaycastHit2D'對象所以'如果(命中)'永遠是真的。這是您應該檢查的返回對象的'collider'屬性。 – Foggzie