Делаю обнаружение через Raycast:
Синтаксис:
Используется csharp
private void Check()
{
float high = 1.1f, step = 0.35f;
for (float i = -0.1f; i < high; i += step)
{
RaySidePointStart = transform.up * i + transform.position;
RaycastHit2D RaySide = Physics2D.Raycast(RaySidePointStart, vectorSideRay, rayDistanceSide, LayerWall);
Debug.DrawRay(RaySidePointStart, vectorSideRay * rayDistanceSide, Color.blue);
if (RaySide.collider != null)
{
TouchedWall = true;
Debug.Log("This is WALL!!!");
}
else if (RaySide.collider == null)
{
TouchedWall = false;
}
}
{
float high = 1.1f, step = 0.35f;
for (float i = -0.1f; i < high; i += step)
{
RaySidePointStart = transform.up * i + transform.position;
RaycastHit2D RaySide = Physics2D.Raycast(RaySidePointStart, vectorSideRay, rayDistanceSide, LayerWall);
Debug.DrawRay(RaySidePointStart, vectorSideRay * rayDistanceSide, Color.blue);
if (RaySide.collider != null)
{
TouchedWall = true;
Debug.Log("This is WALL!!!");
}
else if (RaySide.collider == null)
{
TouchedWall = false;
}
}
и происходит такая бяка:
Т.е. флаг не срабатывает если верхний лучик не касается.
Что не так в условии? Или в чём-то еще?