【发布时间】:2016-01-07 19:34:04
【问题描述】:
我想知道是否有人可以给我一个简单的例子,说明如何在 pygame 中始终在顶层绘制精灵,同时在屏幕上播放动画?
我试图解决的场景是有一个动画精灵(例如一个人在原地行走)和各种其他物体经过他,而他仍然是动画的。
到目前为止,我的解决方案是将动画分层放在“传递对象”之上,这不是我想要的。
提前致谢。
【问题讨论】:
我想知道是否有人可以给我一个简单的例子,说明如何在 pygame 中始终在顶层绘制精灵,同时在屏幕上播放动画?
我试图解决的场景是有一个动画精灵(例如一个人在原地行走)和各种其他物体经过他,而他仍然是动画的。
到目前为止,我的解决方案是将动画分层放在“传递对象”之上,这不是我想要的。
提前致谢。
【问题讨论】:
我认为您已经部分回答了您自己的问题。
这是一个组织首先绘制的内容的问题。部分横版2D游戏采用“图层”的方案,有背景层、中景层、前景层,绘图系统一层一层渲染。
我还看到 Pokémon 自上而下风格的游戏只是按精灵的垂直位置对精灵进行排序,因此最后绘制“最接近”相机的精灵,因此位于其他精灵的顶部。
了解the current implementation of Scene2D in libGDX 如何为每个 Actor 提供一个 z-index 属性,该属性以后可用于将 Actor 组织成层。
【讨论】:
只需使用LayeredUpdates 组绘制您的精灵:
class pygame.sprite.LayeredUpdates
LayeredUpdates 是一个 sprite 组,可以像 OrderedUpdates 一样处理图层和绘制。LayeredUpdates(*spites, **kwargs) -> LayeredUpdates您可以通过 kwargs 使用“default_layer”和一个整数来设置默认层。默认层为 0。
如果您添加的精灵有一个属性层,那么将使用该层。如果 **kwarg 包含“层”,则传递的精灵将被添加到该层(覆盖 sprite.layer 属性)。如果精灵既没有属性 layer 也没有 **kwarg 则使用默认图层来添加精灵。
并为您的精灵提供正确的layer 值。
【讨论】: