Python Pygame:为什么获胜';我的播放器不能播放动画吗?
你好,我目前正在做一个生存射击游戏,我现在对一些事情感到沮丧。一个是我的播放器动画不工作。我这里有player类的代码:Python Pygame:为什么获胜';我的播放器不能播放动画吗?,python,pygame,sprite,Python,Pygame,Sprite,你好,我目前正在做一个生存射击游戏,我现在对一些事情感到沮丧。一个是我的播放器动画不工作。我这里有player类的代码: import pygame from zombie import * # Player class Player(pygame.sprite.Sprite): def __init__(self, x, y, gravity): # Player dimensions and position # Player image an
import pygame
from zombie import *
# Player
class Player(pygame.sprite.Sprite):
def __init__(self, x, y, gravity):
# Player dimensions and position
# Player image and animation
self.images = []
self.images.append(pygame.image.load('images/Sprites/player.png'))
self.images.append(pygame.image.load('images/Sprites/player2.png'))
#~ self.images.append(pygame.image.load('ball1.png'))
#~ self.images.append(pygame.image.load('ball2.png'))
self.maxImage = len(self.images)
self.currentImage = 0
#~ self.rect = pygame.Rect(x, y, 80, 80)
self.rect = self.images[0].get_rect()
self.rect.x = x
self.rect.y = y
self.timeTarget = 10
self.timeNum = 1
self.velX = 0
self.velY = 0
self.health = 100
# Jump and gravity
self.jumping = False
self.on_ground = False
self.origJumpVel = 15
self.jumpVel = self.origJumpVel
self.gravity = 0.5
# Jump inputs
def do_jump(self):
if self.jumping and not self.on_ground:
self.velY = -self.jumpVel
self.jumpVel -= self.gravity
if self.on_ground:
self.jumping = False
self.jumpVel = self.origJumpVel
self.velY = 0
self.on_ground = True
def handle_events(self, event):
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
if not self.jumping:
self.jumping = True
self.on_ground = False
elif event.key == pygame.K_a:
self.velX = -5
elif event.key == pygame.K_d:
self.velX = +5
elif event.type == pygame.KEYUP:
if event.key in (pygame.K_a, pygame.K_d):
self.velX = 0
# PLayer updates
def update(self):
# Animations
if self.timeNum == self.timeTarget:
self.currentImage += 1
if self.currentImage >= self.maxImage:
self.currentImage = 0
self.timeNum = 1
# Health
#if self.rect.x == zombie.rect.x:
#self.health -= 10
# Screen wrap
if self.rect.right > 1280:
self.rect.left = 0
elif self.rect.left < 0:
self.rect.right = 1280
# Player rendering
def render(self, surface):
surface.blit(self.images[self.currentImage], self.rect)
导入pygame
从僵尸导入*
#玩家
职业玩家(pygame.sprite.sprite):
定义初始(自、x、y、重力):
#球员尺寸和位置
#播放器图像和动画
self.images=[]
self.images.append(pygame.image.load('images/Sprites/player.png'))
self.images.append(pygame.image.load('images/Sprites/player2.png'))
#~self.images.append(pygame.image.load('ball1.png'))
#~self.images.append(pygame.image.load('ball2.png'))
self.maxImage=len(self.images)
self.currentImage=0
#~self.rect=pygame.rect(x,y,80,80)
self.rect=self.images[0]。get_rect()
self.rect.x=x
自校正y=y
self.timeTarget=10
self.timeNum=1
self.velX=0
self.velY=0
自我健康=100
#跳跃与重力
自我跳跃=错误
self.on_地面=错误
自启动泵电平=15
self.jumpVel=self.origJumpVel
自重=0.5
#跳转输入
def do_跳转(自):
如果在地面上自行跳跃而非自行:
self.velY=-self.jumpVel
自跳电平-=自重力
如果自身在地面上:
自我跳跃=错误
self.jumpVel=self.origJumpVel
self.velY=0
self.on_地面=真
def句柄_事件(自身、事件):
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_空间:
如果不是自我跳跃:
self.jumping=True
self.on_地面=错误
elif event.key==pygame.K_a:
self.velX=-5
elif event.key==pygame.K\u d:
self.velX=+5
elif event.type==pygame.KEYUP:
如果event.key(pygame.K_a,pygame.K_d):
self.velX=0
#播放器更新
def更新(自我):
#动画
如果self.timeNum==self.timeTarget:
self.currentImage+=1
如果self.currentImage>=self.maxImage:
self.currentImage=0
self.timeNum=1
#健康
#如果self.rect.x==zombie.rect.x:
#自我健康-=10
#丝网包装
如果self.rect.right>1280:
self.rect.left=0
elif self.rect.left<0:
self.rect.right=1280
#播放器渲染
def渲染(自、曲面):
blit(self.images[self.currentImage],self.rect)
如果你想知道我的任何其他问题/挫折,就直说吧。任何帮助都将不胜感激。谢谢你。你有
if self.timeNum == self.timeTarget:
# ...
self.timeNum += 1
但是self.timeNum
是1,self.timeTarget
是10,因此它不能运行,也不能更改self.timeNum
你可能需要
if self.timeNum == self.timeTarget:
# ...
# inside of `if`
self.timeNum = 0
# outside of `if`
self.timeNum += 1
你的问题是什么?我们不能用你发布的代码做任何事情。您没有显示任何类型的游戏循环,我也没有看到任何修改
timeTarget
值的内容。因为我看不到这是在哪里发生的,所以我不知道为什么update
函数中的动画代码可能不起作用。那么你也想要主游戏循环吗?