使用Cocos2d和SpriteKit等框架,可以将sprite/label /节点添加为另一个的子节点。如果一个节点被旋转,那么其子节点的渲染将受整个节点树中的旋转等影响。当精灵是另一个孩子时,LibGDX可以进行相对渲染吗?
这可以在LibGDX中实现吗?
使用Cocos2d和SpriteKit等框架,可以将sprite/label /节点添加为另一个的子节点。如果一个节点被旋转,那么其子节点的渲染将受整个节点树中的旋转等影响。当精灵是另一个孩子时,LibGDX可以进行相对渲染吗?
这可以在LibGDX中实现吗?
你所寻找的是一个场景图和在Scene2d API提到这个提供。你做什么是,你创建一个组,添加你的精灵,例如一个坦克,添加一个标签和其他东西。然后你可以旋转该组,所有的孩子都会随之旋转。如果你只想旋转坦克,这仍然是可能的,但在大多数情况下,你只需转换根节点即一个组。
精灵本身就是假,如果你不想将一些精灵转换到一起,只需将它们放在同一个组中,然后应用转换即可。
如果您想要创建几个带有标签的100个Sprites,您可以这样做:实现一个引用组的RefNode。在添加精灵和标签的位置创建一个组。 (如果要更改标签文本,则必须单独存储它并在实际渲染引用组之前对其进行更新)然后,可以将所有转换应用于RefNode。
假设我想制作一个100个精灵的链。在cocos2d中,只需执行[sprite addChild:anotherSprite] 100次就很容易。但是在LibGDX中,我必须让100个组添加到另一个中,等等。该维基说,这是一个甚至几十个性能瓶颈。字面意思是让每个精灵/标签像一个组一样行动 - 就像一个Cocos2d节点一样。 – Voldemort
我更新了我的答案。如果scene2d API是正确的,问题依然存在。使用它很好,我用它实现了一个简单的游戏(只是一些纹理和动画),但最终你必须实现你自己的小场景图。这将为你的游戏提供更多的灵活性。通过Actor界面,您还可以实现scene2d和场景图之间的桥梁。 – morpheus05
等等,我不需要100个RefNodes吗? – Voldemort
但是演员不能包含另一个演员 - 唯一可以做到这一点的是“团体”演员。如果我想要一个精灵包含另一个包含一些标签的精灵等等呢? – Voldemort
我想可以创建一个自定义的“Sprite”类来封装一个包含一个scene2D精灵子组的Group。但是,每个精灵构建一个组可能是矫枉过正的。会有更简单的方法吗? – Voldemort
希望这会为我工作,当它发生时,我会让你知道。 – ManishSB