我正在尝试制作具有3张图像的sprite动画,我需要该动画才能单击鼠标来播放。
我尝试使用此代码,该代码适用于站立和行走的动画,但是当我将其用于拍摄时,动画不会发生,因为鼠标单击速度很快(但如果按住鼠标按钮也可以)。
if self.standing:
if now - self.last_update > 50:
self.last_update = now
self.current_frame = (self.current_frame + 1) % len(self.game.player_idles)
self.image = pg.transform.scale(self.game.player_idles[self.current_frame], (64, 55))
self.image_copy = pg.transform.rotate(self.image, 270)
答案 0 :(得分:0)
我不确定您如何称呼拍摄部分的动画。
您可以为此发布代码吗?那我也许可以讲更多。否则我的代码可能没有意义。我对此感到抱歉。 (我无法发表评论)
在pygame事件中检查鼠标单击状态。如果您发现点击,请将其存储在标记中,就像对站立部件所做的那样。
我们将在此处使用一个名为click_animation_state的变量,以查看我们当前所在的帧。
self.game.shooting_frames = [img1, img2, img3]
if self.mouse_clicked:
if now - self.last_update > time_threshold:
self.last_update = now
self.current_frame = (self.current_frame + 1) %
len(self.game.shooting_frames)
self.image = pg.transform.scale(self.game.click_frames[self.current_frame], (64, 55))
self.image_copy = pg.transform.rotate(self.image, 270)
答案 1 :(得分:0)
使用事件队列。
在update
中,替换:
if mouse[0]:
self.shooting = True
self.standing = False
self.moving = False
else:
self.shooting = False
具有:
for event in pygame.event.get():
if e.type == MOUSEBUTTONDOWN:
shoot()
然后,您可以完全摆脱shooting
布尔,并将if self.shooting
所做的图形更改添加到shoot
函数中。或者,如果您想保留shooting
bool,则可以执行以下操作:
for event in pygame.event.get():
if e.type == MOUSEBUTTONDOWN:
self.shooting = True
self.moving = False
self.standing = False
if e.type == MOUSEBUTTONUP:
self.shooting = False
此代码将具有更高的响应速度,因为它在用户输入事件(单击)时(而不是是否按住鼠标按钮时)都有效。