В условии одно из значений — 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;
Рискну предположить, что ваша проблема в следующем: ваш код
is_wall[i] && x ? _x : _y
интерпретируется компилятором как
(is_wall[i] && x) ? _x : _y
а вам нужно
is_wall[i] && (x ? _x : _y)
Поставьте явные скобки.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Недавно начал изучать VkNet, сделал авторизацию - успешно, но понадобилось сделать так, чтобы авторизация была во всех формах, то есть если человек...
Здравствуйте,коллеги! Стоит задача переноса коллекции MongoDB в ElasticSearchПроблема в том, что в коллекции используется Type Discriminator