特定のレイヤーマスクがヒットしているかどうかをチェックするために、あるオブジェクトから複数のレイキャストを使用するスクリプトがあり、その間に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 if (!hit)
なしelse
にしようと、それは同じように働きました。
光線のうちの1つが3つ打つと4つの光線があるので、それは常に私にヒット受け入れないようにヒットしません。
あなたは4線から1本の光線がヒットした場合boolean
はtrue
になり、すべての4線がヒットしない場合、それはなりようにする方法を私に伝えることができた場合、私はシードとして私は、ループ内でどのような方法を、最後の線をヒットした場合false
。
'Physics2D.Raycast'は常に非ヌル' RaycastHit2D'オブジェクトを返しますしたがって、 'if(ヒット)'が常にtrueになります。それはあなたが照合しなければならない返されたオブジェクトの 'collider'プロパティです。 – Foggzie