pygame动画精灵表
短信预约 -IT技能 免费直播动态提醒
问题内容
我想使用精灵表在 pygame 中创建一个自上而下的 rpg。
例如,我希望能够按空格键进行攻击,这会触发攻击动画,然后恢复正常
import pygame
from pygame.locals import *
pygame.init()
image = pygame.image.load("sprite_sheet.png")
clock = pygame.time.Clock()
screen = pygame.display.set_mode((400, 250))
class Player(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.current_animation = 0
self.max_animation = 5
self.animation_cooldown = 150
self.last_animation = pygame.time.get_ticks()
self.status = {"prev": "standing",
"now": "standing"}
def animate_attack(self):
time_now = pygame.time.get_ticks()
if time_now - self.last_animation >= self.animation_cooldown:
self.last_animation = pygame.time.get_ticks()
if self.current_animation == self.max_animation:
self.current_animation = 0
joshua.status["now"] = joshua.status["prev"]
else:
self.current_animation += 1
joshua = Player()
while True:
screen.fill(0)
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
joshua.status["prev"] = joshua.status["now"]
joshua.status["now"] = "attacking"
if joshua.status["now"] == "attacking":
joshua.animate_attack()
screen.blit(image, (0, 0), (joshua.current_animation * 64, 0, 64, 64))
pygame.display.flip()
clock.tick(60)
上面的代码是我所拥有的。如果我按一次空格键,它会遍历动画并停止,但如果我按两次空格键,它会循环播放,因为它是如何编程的。
需要一些动画方面的帮助,谢谢
正确答案
问题是由第二次按下空格时的以下调用引起的:
joshua.status["prev"] = joshua.status["now"]
这会将“上一个”和“现在”状态设置为“攻击”。
结果,当在 animate_attack()
方法中重置状态时,
它将保持“攻击”状态:
joshua.status["now"] = joshua.status["prev"]
作为快速修复,请确保仅在尚未设置状态时才更改状态:
if event.key == pygame.k_space:
if not joshua.status["now"] == "attacking":
joshua.status["prev"] = joshua.status["now"]
joshua.status["now"] = "attacking"
作为更好的修复,您应该封装状态, 这样只有 player 类才能处理它自己的状态,例如:
class player():
def __init__(self):
self.current_animation = 0
self.max_animation = 5
self.animation_cooldown = 150
self.last_animation = pygame.time.get_ticks()
self.status = "standing" # simplified state
def attack(self):
self.status = "attacking"
def animate_attack(self):
if self.status == "attacking":
time_now = pygame.time.get_ticks()
if time_now - self.last_animation >= self.animation_cooldown:
self.last_animation = pygame.time.get_ticks()
if self.current_animation == self.max_animation:
self.current_animation = 0
self.status = "standing" # reset state
else:
self.current_animation += 1
这样,就不需要知道类外部的任何状态:
while True:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
joshua.attack()
joshua.animate_attack()
screen.fill(0)
screen.blit(image, (0, 0), (joshua.current_animation * 64, 0, 64, 64))
pygame.display.flip()
clock.tick(60)
以上就是pygame动画精灵表的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
pygame动画精灵表
下载Word文档到电脑,方便收藏和打印~
下载Word文档
猜你喜欢
pygame动画精灵表
问题内容我想使用精灵表在 pygame 中创建一个自上而下的 rpg。例如,我希望能够按空格键进行攻击,这会触发攻击动画,然后恢复正常import pygamefrom pygame.locals import *pygame.init
2024-02-12
Python——动画精灵
继续探索Python中Pygame的强大功能~~ Fighting ^ ▽^文章目录一. 什么是动画精灵二. Sprite类三. move( ) 方法前边已经讲到,看似简单的动画实际上并不简单。如果有大量图像在四处移动,要想跟踪每个图像“底
2023-01-31
2024-04-02
Pygame浅析动画精灵和碰撞检测实现方法
这篇文章主要介绍了利用pygame完成动画精灵和碰撞检测,代码详细,内容丰富,对于想要学习pygame的朋友来讲是一个不错的练习,需要的朋友可以参考下
2023-01-17
Android精灵动画用法实例
本文实例讲述了Android精灵动画用法。分享给大家供大家参考。具体如下:
ElaineAnimated.java文件如下:package net.obviam.walking.model;
import android.graphics.
2022-06-06
2024-04-02
2024-04-02
2024-04-02
python使用pygame创建精灵Sprite的案例
这篇文章主要介绍python使用pygame创建精灵Sprite的案例,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一 、精灵(Sprite),屏幕上的对象。精灵组是精灵的组合。创建空的精灵组对象:精灵组可以对其中的
2023-06-14
Pygame怎么使用精灵和碰撞检测
本篇内容介绍了“Pygame怎么使用精灵和碰撞检测”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在开始学习相关知识点之前,我们有必要先学习精
2023-06-25
2024-04-02
如何安装win7驱动精灵
当我们需要安装驱动器时,我相信每个人都会想到驱动器精灵。就在这两天小边看帖子吧,发现有朋友不知道如何安装win7驱动器精灵,今天小边教你win7驱动器精灵安装驱动器的方法。如何安装win7驱动精灵驱动:1.打开驱动精灵,点击立即检测。2.稍
2023-07-15
windows驱动精灵怎么备份
本篇内容介绍了“windows驱动精灵怎么备份”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!驱动精灵驱动备份:1、打开驱动精灵,点击“百宝箱
2023-07-01
windows驱动精灵怎么使用
这篇“windows驱动精灵怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“windows驱动精灵怎么使用”文章吧。驱
2023-07-01
windows驱动精灵怎么安装
这篇文章主要介绍“windows驱动精灵怎么安装”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“windows驱动精灵怎么安装”文章能帮助大家解决问题。安装方法:1、安装驱动精灵完成后点击“立即体验”
2023-07-01
2024-04-02
windows驱动精灵usb驱动如何安装
本文小编为大家详细介绍“windows驱动精灵usb驱动如何安装”,内容详细,步骤清晰,细节处理妥当,希望这篇“windows驱动精灵usb驱动如何安装”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。驱动精灵usb
2023-07-01
windows驱动精灵WiFi驱动怎么安装
这篇“windows驱动精灵WiFi驱动怎么安装”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“windows驱动精灵WiFi
2023-07-01
windows驱动精灵ahci驱动怎么安装
这篇“windows驱动精灵ahci驱动怎么安装”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“windows驱动精灵ahci
2023-07-01
电脑驱动精灵如何使用
这篇文章主要讲解了“电脑驱动精灵如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“电脑驱动精灵如何使用”吧!电脑驱动精灵使用方法:1、首先我们打开“驱动精灵”2、如果想要检查驱动程序,直
2023-07-02