精灵在计时器后不会重新出现在相同的位置 [英] Sprites will not reappear in same position after a timer

查看:27
本文介绍了精灵在计时器后不会重新出现在相同的位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我已经修复了当玩家站在平台上一段时间后平台消失的问题,而不是移除所有实例,但现在需要让平台在一定时间后重新出现以便玩家可以继续。

我尝试在游戏循环中创建实例并再次添加到组中,并在下面显示的代码中添加新的计时器,但没有任何反应。如果我在此代码后添加到组,平台不会消失,所以我假设将子画面添加到组正在工作,我只是不能得到重新出现的时间延迟。

if self.rect.bottom == trick_platform.rect.top -1:
                        trick_platform.timer += 1
                        if trick_platform.timer > 24:
                            trick_platform.kill()

实例是在World类中绘制World时生成的,如下图所示...

elif tile == 24:#create trick_platform
                    trick_platform = TrickPlatform(x * TILESIZE, y * TILESIZE)
                    trick_platform_group.add(trick_platform)

推荐答案

pygame.sprite.Sprite.kill从所有组中删除精灵。这意味着Sprite对象被销毁,无法重新出现。

我建议使用2个pygame.sprite.Group对象。一个用于可见平台,一个用于不可见平台。

trick_platform_group = pygame.sprite.Group()
invisble_platform_group = pygame.sprite.Group()

将该平台从trick_platform_group中删除,并在其变为不可见时将其添加到invisble_platform_group

trick_platform_group.remove(trick_platform)
invisble_platform_group.add(trick_platform)

当它再次可见时,执行相反的操作

trick_platform_group.add(trick_platform)
invisble_platform_group.remove(trick_platform)

这篇关于精灵在计时器后不会重新出现在相同的位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆