Raycast не видит объект, который находится на старом месте и возвращает себя же Unity C#

Делаю игру "Три в ряд" на Unity C# и столкнулся с проблемой - после обмена камней местами пускаю лучи в 4 направлениях, чтобы определить какие камни окружают текущий. Но! - Лучи попадают и возвращают коллайдеры все правильно, кроме одного - с направления, где камень стоял до этого (вместо этого он просто возвращает текущий объект).

Так пускаю лучи: (castDir - это 4 направления от текущего камня: Vector2.up, Vector2.down, Vector2.left, Vector2.right)

RaycastHit2D hit = Physics2D.Raycast(transform.position, castDir);
Debug.DrawRay(transform.position, castDir, Color.red, 1000f);
Debug.Log("transform.position = " + transform.position);
Debug.Log("hit = " + hit.collider + " - "  + hit.collider.transform.position);

При этом отрисовка лучей через DrawRay производится правильно во все 4 стороны! Обмен камней местами делаю так: (element - это предыдущий камень, с которым меняю выбранный)

Vector3 lastPos = gameObject.transform.position;
Vector3 curPos = element.transform.position;
element.transform.position = new Vector3(lastPos.x, lastPos.y, transform.position.z);
gameObject.transform.position = new Vector3(curPos.x, curPos.y, transform.position.z);

Если я НЕ меняю камни местами и отправляю лучи - то все окружение камня возвращает правильно, а если произвожу обмен, а затем пускаю лучи - обязательно возвращает тот же объект (именно с того направления, с которого он переместился при обмене) (((

Я определил только, что все дело в этом обмене камней местами, потому что, как писал уже выше - без обмена лучи возвращают все правильно. А вот почему так происходит - ума не приложу! Помогите, кто знает или сталкивался с чем-то подобным..


Ответы (0 шт):