Пятница, 22 Ноября 2024, 19:40

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Встреча персонажа с блоком 2D взаимодействие
AstralangelДата: Среда, 06 Ноября 2013, 22:59 | Сообщение # 1
STF Games
Сейчас нет на сайте
Доброго времени суток Unity девелоперы. Нужна ваша непосильная помощь. Делаю платформер небольшой на примере которого изучаю Unity и осваиваю все основные процессы. До этого с юнити не работал. За сутки была сделана сцена, настроено изменение камеры только по оси Y в зависимости от персонажа, настроена спрайтовая анимация на события и многие другие вещи. Вылез неприятный баг.

Для того чтобы в 2Д создать блок через который мы можем прыгать но при падении на него остаться на нем мы делаем Plane+Plane Один для камеры (внешний вид блока через который прыгаем) второй для платформы на которой стоим. Так вот, что собственно интересует. Как избавиться от этой гадости? Если персонаж настигает Plane сбоку (к примеру прыжок с разбега) он может застрять в нем вот таким вот образом. Во первых это мешает адекватному "взбиранию" на блоки, во вторых это попросту выглядит неприемлимо.

Рис 1 - вид в игре

Рис 2 - вид сцены (как реализовано)

Добавлено (06.11.2013, 22:57)
---------------------------------------------
Возможно предвидя вопрос. Блок персонажа не задевает Plane для камеры.

Добавлено (06.11.2013, 22:59)
---------------------------------------------
UPD 2: Цель - не избавиться от косяка с "зависанием" вне плоскости, а задать блоку "прозрачность" по всем осям, чтобы он вставал на него только когда находится сверху, если он не допрыгнул до блока - проходил сквозь него, а не ударялся о боковую стенку.


Весь мир театр, все люди в нем актеры и каждый не одну играет роль (с) Шекспир
AevienДата: Четверг, 07 Ноября 2013, 02:17 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
Делай лучше все свои платформы из кубов. К персонажу лучше физику приставить, так можно быстрее добиться желаемого результата. И персонаж будет у тебя двигаться реалистичней в воздухе smile
AstralangelДата: Четверг, 07 Ноября 2013, 08:42 | Сообщение # 3
STF Games
Сейчас нет на сайте
Aevien, Физика для персонажа работает. Под физикой я имею ввиду изменение скорости, гравитация, или Вы имеете ввиду что-то другое?
По кубам. Разве используя на сцене куб я могу добить эффекта прыжка сквозь него, чтобы при условии нахождения персонажа сверху, он стоял на нем. Во всех остальных случаях - пролетал "сквозь".


Весь мир театр, все люди в нем актеры и каждый не одну играет роль (с) Шекспир

Сообщение отредактировал Astralangel - Четверг, 07 Ноября 2013, 08:42
TheAceДата: Четверг, 07 Ноября 2013, 09:10 | Сообщение # 4
Pain is Pleasure
Сейчас нет на сайте
Цитата Astralangel ()
Разве используя на сцене куб я могу добить эффекта прыжка сквозь него, чтобы при условии нахождения персонажа сверху, он стоял на нем. Во всех остальных случаях - пролетал "сквозь".

Я не умею в юнити, но разве нельзя просто приделать условие
Как-то так (псевдокод):

Код
if( player.y < platform.y )
platform.removeCollision();
else
platform.addCollision();


The End [3D][TPS]
KamiRoninДата: Четверг, 07 Ноября 2013, 09:39 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
Цитата Astralangel ()
если он не допрыгнул до блока - проходил сквозь него, а не ударялся о боковую стенку.

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

но.

если все же нужно чтобы он пролетал если с боков стукнулся, то возможен такой путь:
- для каждой платформы изготовить префаб включающий саму платформу (плэйн или куб) + дочерние триггерные невидимые кубы с краев платформы
- на каждом триггере по краям простой код включения или отключения родительского куба-платформы (например transform.parent.isTrigger = true) по OnTrigger на невидимом кубе.
- родительский куб по умолчанию НЕ IsTrigger в boxColider
- по выходу из триггера - нужно ВЫКЛЮЧАТЬ isTrigger на основной платформе
- можно сделать боковые (и нижний) триггеры чуть шире (выше) платформы и тогда юзеру будет очень понятно НАСКОЛЬКО он не "допрыгнул"

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


Мыслю - значит программирую...
Конструктивная критика - умных ведет к совершенству...
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.


Сообщение отредактировал KamiRonin - Четверг, 07 Ноября 2013, 09:46
AstralangelДата: Четверг, 07 Ноября 2013, 10:12 | Сообщение # 6
STF Games
Сейчас нет на сайте
Цитата KamiRonin ()
сорри, но пролетание головы или торса перса через платформу будет не очень убедительно смотреться!

Там иначе никак. То есть основная идея геймплея в этом и заключается.
Цитата KamiRonin ()
вместо трех триггеров и двух плэйнов можно сделать ДВА бокса - один будет служить и "видимой" на камеру частью и опорой при попадании. а второй невидимый - насквозь пронизывает первый но чуть смещен к низу и несколько шире основного и служит триггером для отключения первого!

Вот этот вариант идеален, спасибо smile


Весь мир театр, все люди в нем актеры и каждый не одну играет роль (с) Шекспир
TheAceДата: Четверг, 07 Ноября 2013, 10:46 | Сообщение # 7
Pain is Pleasure
Сейчас нет на сайте
А разве плейн не коллайдится только сверху?

The End [3D][TPS]
AstralangelДата: Четверг, 07 Ноября 2013, 11:50 | Сообщение # 8
STF Games
Сейчас нет на сайте
Цитата TheAce ()
А разве плейн не коллайдится только сверху?

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


Весь мир театр, все люди в нем актеры и каждый не одну играет роль (с) Шекспир
  • Страница 1 из 1
  • 1
Поиск:

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