我有一个脚本,我使用多个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