Неправильное выполнение условия

197
19 июня 2017, 18:40

В условии одно из значений — false, другое — true (получаемое в тернарном операторе), но тело условия всё равно выполняется.

В тернарном операторе x = true, _x = true; в массиве is_wall последнее значение — false:

Почему происходит данная аномалия?

float height = 0.16f;
float width = 0.06f;
float distancex = 0.06f;
float distancey = 0.2f;
bool x = Vector2.left==direction || Vector2.right==direction ? true : false;
RaycastHit2D[] hits = new RaycastHit2D[3];
bool[] not_null = new bool[3];
bool[] is_wall = new bool[3];
hits[0] = Physics2D.Raycast(transform.position, direction);
hits[1] = Physics2D.Raycast(transform.position+(x?new Vector3(0,height):new Vector3(width,0)), direction);
hits[2] = Physics2D.Raycast(transform.position + (x ? new Vector3(0, -height) : new Vector3(-width, 0)), direction);
for(int i = 0; i < hits.Length; i++)
{
    not_null[i] = hits[i].collider != null;
    is_wall[i] = not_null[i] ? hits[i].collider.tag.Equals("wall") : false;
}
if (!not_null[0] && !not_null[1] && !not_null[2])
      return true;
for(int i = 0; i < 3; i++)
{
    bool _x = hits[i].distance <= distancex;
    bool _y = hits[i].distance <= distancey;
    if (is_wall[i] && x ? _x : _y)
    {
        return false;
    }
}           
return true;  
Answer 1

Рискну предположить, что ваша проблема в следующем: ваш код

is_wall[i] && x ? _x : _y

интерпретируется компилятором как

(is_wall[i] && x) ? _x : _y

а вам нужно

is_wall[i] && (x ? _x : _y)

Поставьте явные скобки.

READ ALSO
Новичок просит помощи в C# [требует правки]

Новичок просит помощи в C# [требует правки]

Хочу попробовать сделать:

242
C# (WinForms) - Как сохранить данные авторизации(VkNet)?

C# (WinForms) - Как сохранить данные авторизации(VkNet)?

Недавно начал изучать VkNet, сделал авторизацию - успешно, но понадобилось сделать так, чтобы авторизация была во всех формах, то есть если человек...

325
Синхронизация MongoDB и ElasticSearch

Синхронизация MongoDB и ElasticSearch

Здравствуйте,коллеги! Стоит задача переноса коллекции MongoDB в ElasticSearchПроблема в том, что в коллекции используется Type Discriminator

313
Поиск через массив

Поиск через массив

Есть объект student

218