很简单,我只想在游戏中制造一个伤害系统,我想要不可战胜的框架(也就是延迟),这样你就不会立即死亡。
作为参考,以下是if语句
if pygame.Rect.colliderect(player_rect, baddude_rect):
print('hit')
time.sleep(0.5)如果你需要整个脚本,我会发布它,堆叠溢出是挑剔的。
我已经尝试过异步和线程处理。
发布于 2022-11-23 03:47:44
一种方法是使用蜱()提供的毫秒计时器。这将返回自PyGame启动以来的毫秒数。做时间计算很方便。
因此,阅读评论,您希望玩家在一次打击后的一段时间内(0.5秒)是无懈可击的。让我们把它变成一个常数:
HIT_CLOCK = 500 # milliseconds player is safe for, after taking a hit所以当玩家被击中时,我们需要等那么久才能记录下另一次击球。这是未来一段时间内玩家被击中的时间,但这很容易计算:
time_now = pygame.time.get_ticks()
player_hit_clock = time_now + HIT_CLOCK # time in the future当代码决定玩家是否应该被击中时,它可以比较“未来的时间”,以确保它现在已经过去了:
if pygame.Rect.colliderect(player_rect, baddude_rect):
time_now = pygame.time.get_ticks()
if time_now > player_hit_clock:
print('hit')
player_hit_clock = time_now + HIT_CLOCK #<<-- reset clock重要的是确保player_hit_clock在第一次使用之前被初始化,将其设置为0就足够了。所以,把所有这些放在一起:
HIT_CLOCK = 500 # milliseconds player is safe for, after taking a hit
# ...
player_hit_clock = 0 # controls player consecutive damage rate
# ...
if pygame.Rect.colliderect(player_rect, baddude_rect):
time_now = pygame.time.get_ticks()
if time_now > player_hit_clock:
print('hit')
player_hit_clock = time_now + HIT_CLOCK # <<-- reset the hit-clock
else:
print('player hit cooldown')使用毫秒时钟的好处是:
https://stackoverflow.com/questions/74540691
复制相似问题