【问题标题】:Pygame sprites always on top example?Pygame精灵总是在最上面的例子?
【发布时间】:2016-01-07 19:34:04
【问题描述】:

我想知道是否有人可以给我一个简单的例子,说明如何在 pygame 中始终在顶层绘制精灵,同时在屏幕上播放动画?

我试图解决的场景是有一个动画精灵(例如一个人在原地行走)和各种其他物体经过他,而他仍然是动画的。

到目前为止,我的解决方案是将动画分层放在“传递对象”之上,这不是我想要的。

提前致谢。

【问题讨论】:

    标签: object pygame sprite


    【解决方案1】:

    我认为您已经部分回答了您自己的问题。

    这是一个组织首先绘制的内容的问题。部分横版2D游戏采用“图层”的方案,有背景层、中景层、前景层,绘图系统一层一层渲染。

    我还看到 Pokémon 自上而下风格的游戏只是按精灵的垂直位置对精灵进行排序,因此最后绘制“最接近”相机的精灵,因此位于其他精灵的顶部。

    了解the current implementation of Scene2D in libGDX 如何为每个 Actor 提供一个 z-index 属性,该属性以后可用于将 Actor 组织成层。

    【讨论】:

      【解决方案2】:

      只需使用LayeredUpdates 组绘制您的精灵:

      class pygame.sprite.LayeredUpdates
      LayeredUpdates 是一个 sprite 组,可以像 OrderedUpdates 一样处理图层和绘制。
      LayeredUpdates(*spites, **kwargs) -> LayeredUpdates

      您可以通过 kwargs 使用“default_layer”和一个整数来设置默认层。默认层为 0。

      如果您添加的精灵有一个属性层,那么将使用该层。如果 **kwarg 包含“层”,则传递的精灵将被添加到该层(覆盖 sprite.layer 属性)。如果精灵既没有属性 layer 也没有 **kwarg 则使用默认图层来添加精灵。

      并为您的精灵提供正确的layer 值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-25
        • 1970-01-01
        • 2017-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多