Raycast не видит объект, который находится на старом месте

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Raycast не видит объект, который находится на старом месте

Сообщение skroliks 17 сен 2022, 13:13

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

Так пускаю лучи: (castDir - это 4 направления от текущего камня: Vector2.up, Vector2.down, Vector2.left, Vector2.right) Используется C#
Синтаксис:
Используется javascript
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 - это предыдущий камень, с которым меняю выбранный) Используется C#
Синтаксис:
Используется javascript
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);


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

Я определил только, что все дело в этом обмене камней местами, потому что, как писал уже выше - без обмена лучи возвращают все правильно. А вот почему так происходит - ума не приложу! Помогите, кто знает или сталкивался с чем-то подобным..
skroliks
UNIт
 
Сообщения: 60
Зарегистрирован: 10 сен 2022, 13:30

Re: Raycast не видит объект, который находится на старом месте

Сообщение 1max1 17 сен 2022, 13:38

Может ты двигаешь их графику, но забываешь двигать коллайдер, тут мало инфы, раскидывай логи.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Raycast не видит объект, который находится на старом месте

Сообщение skroliks 18 сен 2022, 09:11

1max1 писал(а):Может ты двигаешь их графику, но забываешь двигать коллайдер, тут мало инфы, раскидывай логи.

Нет, я двигаю полностью объекты - по коду же видно.. И логи я написал какие ставлю и что они выдают.. Вот как раз если я меняю местами не объекты, а их спрайты - то все работает как надо, но мне такой вариант не подходит ((
skroliks
UNIт
 
Сообщения: 60
Зарегистрирован: 10 сен 2022, 13:30

Re: Raycast не видит объект, который находится на старом месте

Сообщение Alkos26Rus 18 сен 2022, 10:33

skroliks писал(а):
1max1 писал(а):Может ты двигаешь их графику, но забываешь двигать коллайдер, тут мало инфы, раскидывай логи.

Нет, я двигаю полностью объекты - по коду же видно.. И логи я написал какие ставлю и что они выдают.. Вот как раз если я меняю местами не объекты, а их спрайты - то все работает как надо, но мне такой вариант не подходит ((

По коду не видно что ты двигаешь, ты просто двигаешь объект по ссылке, а что у тебя в ссылке не понятно. Так же ты дал код не полностью, где именно ты выполняешь команды и в какой последовательности, апдейт или по клику, какая последовательность, может ты сначала запускаешь рейкаст а потом меняешь местами объекты
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1641
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Raycast не видит объект, который находится на старом месте

Сообщение skroliks 18 сен 2022, 14:07

Alkos26Rus писал(а):
skroliks писал(а):
1max1 писал(а):Может ты двигаешь их графику, но забываешь двигать коллайдер, тут мало инфы, раскидывай логи.

Нет, я двигаю полностью объекты - по коду же видно.. И логи я написал какие ставлю и что они выдают.. Вот как раз если я меняю местами не объекты, а их спрайты - то все работает как надо, но мне такой вариант не подходит ((

По коду не видно что ты двигаешь, ты просто двигаешь объект по ссылке, а что у тебя в ссылке не понятно. Так же ты дал код не полностью, где именно ты выполняешь команды и в какой последовательности, апдейт или по клику, какая последовательность, может ты сначала запускаешь рейкаст а потом меняешь местами объекты


Все, точно!!! Я нашел проблему - просто получается я отправлял лучи и менял местами объекты одновременно - вот оно и кидало луч, потом меняло объекты местами и соответственно выдавало мне "старое" местоположение.. x_x
skroliks
UNIт
 
Сообщения: 60
Зарегистрирован: 10 сен 2022, 13:30


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 20