Четверг, 28 Марта 2024, 14:26

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Сортировка частей персонажа (2d sprite)
Сортировка частей персонажа (2d sprite)
scorp2007Дата: Вторник, 18 Октября 2016, 10:14 | Сообщение # 1
частый гость
Сейчас нет на сайте
Вобщем имеется персонаж по частям (отдельно, голова, руки, туловище итд), чтобы запихать все эти части в 1 GameObject и уже анимировать из самго Unity. Проблема в том, что я не могу нормально отсортировать части персонажа, чтобы все было на своих местах. Я пробовал отсортировать их по Z координате, в итоге получается не то, что нужно. Далее я попытался отсортировать по свойству "Order in layer" как это делается в некоторых уроках по анимации перса, которые я видел. Итого всё на своих местах:

но игра такого рода где персонажи будут пересекаться друг с другом (обгонять друг друга с равной X координатой, допустим), и если мы сделаем дупликат персонажа и попробуем их пересечь - то видим следующее:


То есть части того персонажа, залазят на части дупликата, что конечно же не допустимо и персонажи должны вести себя как единое целое, но как тогда отсортировать части персонажа чтоб у них у всех был единый "Order in layer".

Вобщем буду рад если кто знает и подскажет как это дело решается. yes
NightLordДата: Вторник, 18 Октября 2016, 21:54 | Сообщение # 2
участник
Сейчас нет на сайте
Юнити сортирует спрайты следующим образом:
- слой
- позиция в слое
- z координата

Очевидно, что толк от z координаты будет только в случае одинаковой позиции в слое.
Лечится довольно просто. Нужно привязать позицию в слое к высоте (Y координате). Скажем первый моб стоит в нуле, в торой ниже на 1 пункт (минимальная дистанция). Допустим мобы имеют 5 спрайтов. Значит у верхнего моба спрайты будут от 0 (0 * 5) до 5 (0 * 5 + 5), у нижнего от 5(1 * 5) до 10(1 * 5 + 5)

Разумеется дельта (в нашем случае 5) должна быть максимальная из возможных. Т.е. если будет бежать персонаж с 10 спрайтами раз в пять минут, значит дельта будет 10, даже если у моба всего 5 спрайтов


Часто стоишь в пробке или очереди? Эта игра поможет скоротать время 7Bricks - головоломка с цифрами.
scorp2007Дата: Вторник, 18 Октября 2016, 23:23 | Сообщение # 3
частый гость
Сейчас нет на сайте
Цитата NightLord ()
Юнити сортирует спрайты следующим образом:
- слой
- позиция в слое
- z координата

Очевидно, что толк от z координаты будет только в случае одинаковой позиции в слое.
Лечится довольно просто. Нужно привязать позицию в слое к высоте (Y координате). Скажем первый моб стоит в нуле, в торой ниже на 1 пункт (минимальная дистанция). Допустим мобы имеют 5 спрайтов. Значит у верхнего моба спрайты будут от 0 (0 * 5) до 5 (0 * 5 + 5), у нижнего от 5(1 * 5) до 10(1 * 5 + 5)

Разумеется дельта (в нашем случае 5) должна быть максимальная из возможных. Т.е. если будет бежать персонаж с 10 спрайтами раз в пять минут, значит дельта будет 10, даже если у моба всего 5 спрайтов

спасибо, думал есть более оптимальное решение данного вопроса,а минимальная дистанция у меня в игре предполагает хоть 0.01, то есть куча солдат таких бегут по дороге появляясь с рандомным Y. а если их положение по ходу бега будет меняться, это каждый кадр перерасчеты каждой части делать. а про z координату - конечно я пробовал ее менять когда у всех частей ордер 0 стоял - но все-равно не получалось.
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Сортировка частей персонажа (2d sprite)
  • Страница 1 из 1
  • 1
Поиск:

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