Python 我改变了速度来做短跑,但想在这里增加一些短跑长度限制
所以我让我的角色(玩家)在同时按“左键”或“右键”的同时按“L shift”可以更快地改变速度。 问题是,我想让这个“冲刺”在达到我设定的极限时停止。我希望我的角色不要一次冲刺超过400米。有什么可能的方法我可以用。。?因为我试了很多,但还是找不到任何有效的。 这是我的主回路中设置破折号的部分。char在循环之前定义 运行时:Python 我改变了速度来做短跑,但想在这里增加一些短跑长度限制,python,pygame,pygame-surface,pygame-clock,pygame-tick,Python,Pygame,Pygame Surface,Pygame Clock,Pygame Tick,所以我让我的角色(玩家)在同时按“左键”或“右键”的同时按“L shift”可以更快地改变速度。 问题是,我想让这个“冲刺”在达到我设定的极限时停止。我希望我的角色不要一次冲刺超过400米。有什么可能的方法我可以用。。?因为我试了很多,但还是找不到任何有效的。 这是我的主回路中设置破折号的部分。char在循环之前定义 运行时: clock.tick(20) for event in pygame.event.get(): keys = pygame.key.get_presse
clock.tick(20)
for event in pygame.event.get():
keys = pygame.key.get_pressed()
mods = pygame.key.get_mods()
if event.type == pygame.QUIT:
run = False
elif keys[pygame.K_LEFT] and mods & pygame.KMOD_LSHIFT or keys[pygame.K_RIGHT] and mods & pygame.KMOD_LSHIFT:
print("pressed: SHIFT")
char.vel = 20
#I wanna set dash limit to 400px but evry try sitll is all failled..
else:
char.vel = 5
不需要测量像素,您可以创建一个名为
dash\u count
的变量,首先将其设置为零,并在字符出现破折号时使其增加1。这可以通过while循环实现:
while dash_count <= 400:
pass
# make your character dash over here
当破折号计数时,对破折号使用实时毫秒限制相当容易。然后,您可以将时间校准到您希望的破折号长度
在下面的代码中,我将此时间限制设置为DASH\u time\u limit
。播放器char
有一个名为char.dash\u finish
的新成员变量。当短跑开始时,我们把短跑的时间限制放在这里。然后在主循环中,我们检查每个帧,看看当前时间是否在这个时间之后,这表明时间限制已经过期
要开始冲刺,首先我们要检查他们是否已经冲刺。然后,dash_finish
时间就是“现在”加上未来几毫秒
DASH_TIME_LIMIT = 700 # milliseconds
for event in pygame.event.get():
keys = pygame.key.get_pressed()
mods = pygame.key.get_mods()
if event.type == pygame.QUIT:
run = False
elif keys[pygame.K_LEFT] and mods & pygame.KMOD_LSHIFT or keys[pygame.K_RIGHT] and mods & pygame.KMOD_LSHIFT:
print("pressed: SHIFT")
if ( char.dash_finish == None ): # Not already dashing?
char.vel = 20
char.dash_finish = pygame.time.get_ticks() + DASH_TIME_LIMIT
# else:
# char.vel = 5
# has the dash-time expired?
time_now = pygame.time.get_ticks()
if ( char.dash_finish == None ):
char.vel = 5
elif ( time_now > char.dash_finish ):
# dash has now finished
char.dash_finish = None
char.vel = 5
clock.tick(20)
使用时间限制比计算播放器每帧所经过的像素数更容易。我尝试过,但之后角色根本就没有冲刺。。。也许我的代码在另一部分有冲突,我想(?)无论如何谢谢:)哇,我调整了一些东西,现在它工作得很好!只是因为我设定了时钟,事情重叠了;0再次感谢您的帮助!!我试过了,但没用。。也许我应该多做点什么。谢谢,顺便说一句