Суббота, 15 Июня 2024, 16:05

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Помощь по обходу спрайтов объекта.
Tamaz_ExoДата: Вторник, 10 Мая 2022, 00:06 | Сообщение # 1
уже был
Сейчас нет на сайте
Добрый день.
Прошу помогите, как можно реализовать обход спрайта объекта. На пример дома или дерева.
Если персонаж стоит перед деревом или домом спрайт игрока должен накладываться на спрайт дома. Это я реализовал.
А вот если персонаж стоит сзади дома или дерева то спрайт персонажа все еще накладывается на спрайт объекта.
Примерно я понимаю что нужно приподнять высоту спрайта задней части. но не совсем пойму как это сделать?

Нормально

Не совсем нормально


Сообщение отредактировал Tamaz_Exo - Вторник, 10 Мая 2022, 00:07
TLTДата: Вторник, 10 Мая 2022, 00:44 | Сообщение # 2
Сейчас нет на сайте
Нужно менять приоритет спрайт от Y координаты. В сложных проектах нужно реализовывать код "приоритетную очередь" по родительскому объекту. Погугли "GameMaker Sprite Direction Priority", "GameMaker Depth and drawing sprites".

Дао, выраженное словами, не есть истинное Дао.
Tamaz_ExoДата: Вторник, 10 Мая 2022, 01:18 | Сообщение # 3
уже был
Сейчас нет на сайте
Я тут по раскинул мозгами. И подумал. Нужно на персонаже реализовать проверку на заступ в спрайт. и если я вступил в спрайт объекта то его ширину делить на 2. Проверить координаты начала спрайта и если я нахожусь выше середины то понижать спрайт персонажа.
Единственное сейчас нужно разобраться какие функции могут распознать спрайт+ как узнать начало координат.
Из опять же выдуманного мной. Точкой начала спрайта нужно брать точку источника и переместить ее в низ.

Если есть у кого то инфо по нужным функциям дайте их пожалуйста.

За запросы в гугл спасибо. пойду погуглю еще.

Добавлено (10 Мая 2022, 12:27)
---------------------------------------------
Возможно кому то будет интересно решение.
Через перерисовку спрайтов я не пошел. Весьма сложно для меня еще.
Сделал объект сделал его родителем всех объектов которые нарисованы на карте + персонаж.
В событие Step прописал depth=-y. И унаследовал всеми объектами через функцию event_inherited().
Вроде все говорят что этот способ не совсем правильный сточки зрения загрузки CPU. но пока еще не могу сравнить так как не хватает мозгов понять как работает прорисовка. учитывая что инфа есть только на английском а я в английском такой себе знаток.

TLTДата: Вторник, 10 Мая 2022, 15:10 | Сообщение # 4
Сейчас нет на сайте
Какая версия GM? Просто для новой версии в ассетах видел шаблон изометрического проекта - в таких случаях лучше подсмотреть. Впрочем, если проект несложный по количеству объектов и слоёв, то можно и самому додуматься до простого решения без использования "вышей математики", как это сделал ты.

Я изометрию пробовал делать в ретро-проектах на basic, C и ASM, там я сверял по Y объекты на экране (для оптимизации нужно было исключать вышедшие за пределы видимости), где-то объекты были с коллизиями и разделены на 2 спрайта с разным приоритетом (типа дерева) и было достаточно просто сделать приоритет по Y (а по боксу колизии персонаж просто никогда не мог спуститься в дерево меньше ширины ствола), учитывая высоту персонажа и высот от всегда вторичной в приоритете части спрайта объекта (например, в твоём доме на скрине всё, что ниже правого угла всегда за игроком, в любом случае).


Дао, выраженное словами, не есть истинное Дао.
firedayДата: Суббота, 16 Июля 2022, 15:19 | Сообщение # 5
частый гость
Сейчас нет на сайте
Цитата Tamaz_Exo ()
учитывая что инфа есть только на английском

Советую учить англ. Пригодится по жизни

У GM очень хороший встроенный хелп, открывающийся по F1 или клику средней клавишей мыши по коду
  • Страница 1 из 1
  • 1
Поиск:

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