Пятница, 22 Ноября 2024, 08:04

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Проблема с проверкой объекта с разных сторон спрайта 2D
tdukДата: Четверг, 12 Января 2017, 23:39 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Пускаю рейкасты с 4х сторон от спрайта(верх низ право лево). Проверяю ими можно ли туда ходить.
Код
RaycastHit hit;
                if (Physics.Raycast(new Ray(transform.position, Vector2.left), out hit))
                {
                    Debug.Log(hit.collider.gameObject.name);

                    transform.Translate(0, hodRasstoyan, 0);
                } else
                {
                    //выбираем другое направление

                }

стены(с BoxCollider) находятся по оси Z 0.
враги находятся по оси Z 0.1. Может в этом проблема?


ReanДата: Пятница, 13 Января 2017, 01:10 | Сообщение # 2
участник
Сейчас нет на сайте
tduk, тебе необходимо отложить проект в сторону и внимательно заняться изучением Unity, ознакомиться и понять базовые уроки по работе с 2D в данной среде. Говорю это отнюдь не с напыщенностью и надменностью, а исключительно из желания помочь, потому как сейчас у тебя в корне неверное представление.

Во-первых, если работаешь с 2D, то и использовать надо соответствующие классы и компоненты: RaycastHit2D, Physics2D и т.д.
Во-вторых, объекты участвующие в raycast'е обязательно должны иметь collider (в данном случае, какой-нибудь из 2D коллайдеров).
В-третьих, разберись с алгоритмом. У тебя здесь получается следующее:
Код

Если есть объект на пути луча, то
    ...
    Двигаем объект в направлении луча

А должно быть совершенно наоборот.
В-четвертых, в данном случае это не важно, но ты пускаешь бесконечный луч. Это означает, что даже если рядом слева от спрайта есть пустое место, а где-то далеко имеется стена, то raycast'вернёт тебе именно стену. Тебе ещё нужен параметр distance.
В-пятых, при работе с 2D, использовать координату Z стоит только в исключительных случаях. В твоём же случае, оптимальным вариантом будет работа с layermask'ами и tag'ами. Узнать про них больше сможешь из тех же уроков Unity.
В-шестых, вот пример рабочего скрипта для управления объектом (проверяет, нет ли рядом любых других объектов с collider'ом):


Сообщение отредактировал Rean - Пятница, 13 Января 2017, 01:16
tdukДата: Пятница, 13 Января 2017, 07:33 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
Rean, извиняюсь, этот код был с инета и он был последнее что я в коде пробовал. Пробовал делать как вы показали до этого, не работало

ReanДата: Пятница, 13 Января 2017, 18:22 | Сообщение # 4
участник
Сейчас нет на сайте
tduk, что конкретно не получается? Коллайдеры висят на объектах? Объект двигается сквозь стены или не двигается вообще?
tdukДата: Суббота, 14 Января 2017, 00:01 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Rean, я разобрался,спасибо за помощь! Проблема была в перемещении,т е проверялась стена слева а объект ходил вправо.

  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг