鼠标点击精灵动画

时间:2019-05-21 17:56:46

标签: python pygame

我正在尝试制作具有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)

2 个答案:

答案 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

此代码将具有更高的响应速度,因为它在用户输入事件(单击)时(而不是是否按住鼠标按钮时)都有效。