2014-01-25 1 views
2

С такими каркасами, как Cocos2d и SpriteKit, можно добавить спрайт/метку/узел как дочерний элемент другого. Если узел вращается, тогда на его дереве будет влиять рендеринг его дочерних элементов и т. Д.Может ли LibGDX относительный рендеринг, когда спрайт - это ребенок другого?

Возможно ли это в LibGDX?

ответ

0

Да, этого можно достичь, используя Scene2d.

Wiki Entry:

  • Поворот и масштаб группы применяется ко всем детям актеров. Детские актеры всегда работают в своей собственной системе координат, родительские преобразования применяются прозрачно.
+0

Но актер не может содержать другого актера - единственным, кто может это сделать, является актер «Группы». Что делать, если я хочу, чтобы спрайт содержал другой спрайт, содержащий некоторые метки и т. Д.? – Voldemort

+0

Я предполагаю, что можно создать собственный класс «Sprite», который инкапсулирует группу, содержащую один отдельный sprite-файл scene2D. Но создание одной группы для спрайта может быть излишним. Будет ли более простой способ? – Voldemort

+0

Надеюсь, это сработает для меня, и когда это произойдет, я дам вам знать. – ManishSB

0

Что вы ищете сцена Graph, и это при условии, как указано в Scene2d апи. Что вы делаете, вы создаете группу, добавляете свой спрайт, например. танк, добавить ярлык и прочее. Затем вы можете повернуть группу, и все дети будут повернуты вместе с ней. Если вы хотите просто повернуть резервуар, это все еще возможно, но в большинстве случаев вы просто преобразуете корневой узел, группу.

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

Если вы хотите создать несколько 100 спрайтов вместе с меткой, вы можете сделать это: Внесите RefNode, который ссылается на группу. Создайте группу, в которой вы добавите спрайт и метку. (если вы хотите изменить текст ярлыка, вам нужно будет его отдельно сохранить и обновить, прежде чем вы нарисуете ссылочную группу). Затем вы можете применить все преобразования к RefNode.

+0

Предположим, я хочу создать цепочку из 100 спрайтов. В cocos2d легко просто сделать [sprite addChild: anotherSprite] 100 раз. Но в LibGDX мне пришлось бы сделать 100 групп, чтобы добавить один в другой и так далее? Вики говорят, что это узкое место в производительности, чтобы сделать даже несколько десятков. Буквально хочется, чтобы каждый спрайт/метка действовал как группа, то есть, как узел Cocos2d. – Voldemort

+0

Я немного изменил свой ответ. Вопрос остается, если API-интерфейс scene2d верен. Приятно использовать его, я реализовал с ним простую игру (только некоторые текстуры и анимацию), но в конечном итоге вам нужно реализовать свой собственный небольшой график сцены. Это будет иметь преимущество, чтобы обеспечить большую гибкость для вашей игры. С интерфейсом Actor вы также можете реализовать мост между сценой 2d и графиком сцены. – morpheus05

+0

Подождите, мне не понадобится 100 RefNodes? – Voldemort

Смежные вопросы