특정 레이어 마스크가 맞았는지 확인하기 위해 하나의 객체에서 여러 개의 raycast를 사용하는 스크립트가 있고 그 사이에 for
루프를 사용하고 있습니다.레이가 무언가 또는 무언가에 부딪쳤다는 것을 어떻게 알 수 있습니까?
그러나 문제는 다음과 같습니다 광선 중 하나가 true
될 것 boolean
을 명중하고 "모든"광선이 명중하지 않는 경우, 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
으로 시도하고는 동일했다.
광선 중 하나가 3 개를 맞으면 4 개의 광선이 나오므로 나에게 맞지 않으므로 4 개의 광선이 있습니다.
나는 당신이 만드는 방법을 가르쳐 수있는 경우 4 선에서 하나의 선이 boolean
이 true
된다 명중하고 모든 사 광선이 명중하지 않는 경우가 false
을하게되면 내가 씨앗으로 루프의 모든 방법을 마지막 선에 충돌하는 경우 .
'Physics2D.Raycast'는 항상 널이 아닌'RaycastHit2D' 오브젝트를 리턴합니다 그래서'if (hit)'이 항상 true가됩니다. 그것은 당신이 대조해야하는 반환 된 객체의'collider' 속성입니다. – Foggzie