Pygame 零玩家动画代码不工作
Pygame Zero Player Animation Code Is Not Working
我一直在尝试编写一个带有四处移动角色的小游戏。出于某种原因,我不能使用 gif。在那之后,我把 gif 变成了一堆 png,然后我试着写一些代码来让它动起来:
def animate():
global frame
curr_img = "player-walk" + str(frame)
player.image = curr_img
frame += 1
if frame > 2:
frame = 1
当我尝试这段代码时,我一调用它就会出错。这是我写的完整代码:
import pgzrun as pgzero
import pygame
player = Actor("player")
frame = 1
WIDTH = 660
HEIGHT = 450
def move_player():
if keyboard.w:
player.y -= 2
clock.schedule_interval(animate(), 0.5)
if keyboard.s:
player.y += 2
if keyboard.a:
player.x -= 2
if keyboard.d:
player.x += 2
def animate():
global frame
curr_img = "player-walk" + str(frame)
player.image = curr_img
frame += 1
if frame > 2:
frame = 1
def draw():
screen.clear()
player.draw()
def update():
move_player()
pgzero.go()
这里有错误link:
mystb.in/LitFillEquilibrium.sql
在这一行
clock.schedule_interval(animate(), 0.5)
clock.schedule_interval
接受一个可调用对象(函数)和时间间隔。通过在 animate
之后添加括号,您实际上是在调用该函数并传递其输出。因为 animate
没有 return 任何东西(None
),你正在做同样的事情:
clock.schedule_interval(None, 0.5)
它应该在哪里
clock.schedule_interval(animate, 0.5)
我一直在尝试编写一个带有四处移动角色的小游戏。出于某种原因,我不能使用 gif。在那之后,我把 gif 变成了一堆 png,然后我试着写一些代码来让它动起来:
def animate():
global frame
curr_img = "player-walk" + str(frame)
player.image = curr_img
frame += 1
if frame > 2:
frame = 1
当我尝试这段代码时,我一调用它就会出错。这是我写的完整代码:
import pgzrun as pgzero
import pygame
player = Actor("player")
frame = 1
WIDTH = 660
HEIGHT = 450
def move_player():
if keyboard.w:
player.y -= 2
clock.schedule_interval(animate(), 0.5)
if keyboard.s:
player.y += 2
if keyboard.a:
player.x -= 2
if keyboard.d:
player.x += 2
def animate():
global frame
curr_img = "player-walk" + str(frame)
player.image = curr_img
frame += 1
if frame > 2:
frame = 1
def draw():
screen.clear()
player.draw()
def update():
move_player()
pgzero.go()
这里有错误link: mystb.in/LitFillEquilibrium.sql
在这一行
clock.schedule_interval(animate(), 0.5)
clock.schedule_interval
接受一个可调用对象(函数)和时间间隔。通过在 animate
之后添加括号,您实际上是在调用该函数并传递其输出。因为 animate
没有 return 任何东西(None
),你正在做同样的事情:
clock.schedule_interval(None, 0.5)
它应该在哪里
clock.schedule_interval(animate, 0.5)