Пятница, 22 Ноября 2024, 20:13

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Система игнорирования слоев (Raycast)
SomeOneInTheMaskДата: Понедельник, 07 Октября 2013, 02:07 | Сообщение # 1
Stranger
Сейчас нет на сайте
Всем здорова!
Как вы знаете вот так выглядит функция Raycast:

Код
static bool Raycast(Vector3 origin, Vector3 direction, float distance, int layerMask);


Вполне очевидно как задаются и за что отвечают параметры: Vector3 origin, Vector3 direction, float distance (если кто не знает, как их задать, есть манумал или мои уроки 1 2)

Я хочу вам рассказать о параметре layerMask. Он отвечает за те слои, которые луч не будет игнорировать (то есть возвращать true при пересечении их).
Для этого нам понадобиться двоичная система счисления... в ней в отличии от от десятичной для задания чисел используется только 1 и 0. (0, 1, 10, 11, 100... )
Например (первое число записано в двоичной, а второе в десятичной):
0=0
1=1
10=2
11=3
100=4 и так далее

Нам нужно будет переводить число из двоичной в десятичную запись. Для этого можно использовать инженерный калькулятор или старый дедовский способ smile


Начинаем писать наше число с права налево. Если вы хотите, чтобы слой не был игнорируемым, тогда пишете 1, в противном случае 0.
Для картинки слои 1,2,5,6,7 рабочие.



Число полученное после перевода (то есть 230) пишем в функцию.

Если написать 0 то луч будет игнорировать все слои, если написать -1 тогда все слои будут рабочими для луча.
Вообще для отрицательных чисел все то же самое, только в точности наоборот и отсчет пойдет с -2, поскольку -1 это противоположность нуля. То есть при -2 игнорируется нулевой слой.
При записи числа в двоичной системе, пишем все так же с лева на право, но на этот раз, если хотите, чтобы слой не был игнорируемым, тогда пишете 0, в противном случае 1. Но после перевода не забудьте абсолютное значение увеличить на 1 smile
Для картинки слои 0,3,4,8,9,10,11... рабочие.

Видео урок по этой теме


Карта моего канала по созданию игр на Unity3d, можно даже заказать урок бесплатно)

Сообщение отредактировал SomeOneInTheMask - Понедельник, 07 Октября 2013, 02:09
allodsДата: Понедельник, 07 Октября 2013, 02:43 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
А есл мне нужно игнорить слой terrain? то что мне писать

Сообщение отредактировал allods - Понедельник, 07 Октября 2013, 02:44
nwsxДата: Понедельник, 07 Октября 2013, 02:55 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
неудобно наверное тебе игру делать, братюнь - в одной руке инженерный калькулятор, в другой счёты.

private static LayerMask ground = 1 << 8;
private static LayerMask obstacle = 1 << 9;
private static LayerMask unit = 1 << 11;

public static LayerMask bulletImpactLayers = ground | obstacle | unit;

wink


Westboro
Dungeon Journey на Google Play
KamiRoninДата: Понедельник, 07 Октября 2013, 12:51 | Сообщение # 4
почти ветеран
Сейчас нет на сайте
Цитата (allods)
А есл мне нужно игнорить слой terrain? то что мне писать

у террайна тоже есть слой, а у этого слоя - номер. вот в бит под этим номером и пиши "1", а потом пересчитывай.
или вон, с битовым сдвигом (#3) попробуй, так .. мм.. ТИПА нагляднее! smile


Мыслю - значит программирую...
Конструктивная критика - умных ведет к совершенству...
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
SomeOneInTheMaskДата: Вторник, 08 Октября 2013, 16:05 | Сообщение # 5
Stranger
Сейчас нет на сайте
Цитата (nwsx)
братюнь - в одной руке инженерный калькулятор, в другой счёты.

я по образованию инженер и у меня есть программируемый калькулятор, но в тоже время я иногда считаю в столбик на бумажке или на глазок прикидываю...
когда постоянно на кнопки жмешь, человек отупевает и потом уже не способен отойти от набора каких-то функций и логически рассуждать. А когда человек знает как устроена функция изнутри тогда он способен анализировать.... тут был пару дней назад парнишка который сделал игру, а интеллект написать не может, хотя там все просто было.
Так что новичкам полезно научиться думать smile


Карта моего канала по созданию игр на Unity3d, можно даже заказать урок бесплатно)
  • Страница 1 из 1
  • 1
Поиск:

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