问题描述
我在 python 的 pygame 库中创建了一个简单的平台游戏。我已经加载了空闲和运动姿势的玩家图像,在运动过程中他的图像非常模糊,我尝试转换图像但它不起作用,这是下面两个文件的代码,一个是玩家类,另一个是主游戏文件
import pygame as pg
from os import path
import random
class Player(pg.sprite.Sprite):
def __init__(self,winx,winy):
super().__init__()
image_dir=path.join(path.dirname(__file__),'Enemy_walk')
self.winx=winx
self.winy=winy
self.walk_left=[]
self.walk_right=[]
current_pic=2
for i in range(7):
if i==0:
idle=pg.image.load(path.join(image_dir,'enemy1.png'))#.convert()
self.idle=pg.transform.scale(idle,(100,100))
continue
left=pg.image.load(path.join(image_dir,'enemy'+str(current_pic)+'.png'))#.convert()
left1=pg.transform.scale(left,100))
right=pg.transform.flip(left1,True,False)
self.walk_left.append(left1)
self.walk_right.append(right)
current_pic+=1
self.image=self.idle
self.rect=self.image.get_rect()
self.rect.x=winx//2
self.rect.bottom=winy
self.moving_left=False
self.moving_right=False
self.speed=[9,10]
self.index=0
self.animation_speed=0
self.gravity=1
self.is_jumping=False
def update(self):
key=pg.key.get_pressed()
if key[pg.K_a] and self.rect.left>0:
self.moving_left=True
self.rect.left-=self.speed[0]
self.animation_speed+=1
if self.index>len(self.walk_left)-1:
self.index=0
if self.animation_speed>2:
self.image=self.walk_left[self.index]
self.index+=1
self.animation_speed=0
elif key[pg.K_d] and self.rect.right<self.winx:
self.moving_right=True
self.rect.right+=self.speed[0]
self.animation_speed+=1
if self.index>len(self.walk_right)-1:
self.index=0
if self.animation_speed>2:
self.image=self.walk_right[self.index]
self.index+=1
self.animation_speed=0
else:
self.moving_left=False
self.moving_right=False
self.animation_speed=10
self.index=0
self.image=self.idle
if key[pg.K_SPACE] and self.is_jumping==False:
self.is_jumping=True
if self.speed[1]>=-10 and self.is_jumping==True:
self.rect.y -= self.speed[1]*abs(self.speed[1]*0.5)
self.speed[1]-=self.gravity
else:
self.speed[1]=10
self.is_jumping=False
我尝试降低速度并改变帧出现的时间,但这是最自然的方式,速度与帧匹配,但运动模糊 在主文件中,我只是使用组在屏幕上绘制他
import pygame as pg
import random
from os import path
from Player import *
#Variables go in here
win_width=800
win_height=600
fps=30
BLACK=(0,0)
WHITE=(255,255,255)
RED=(255,0)
GREEN=(0,0)
BLUE=(0,255)
LIGHT_BLUE=(173,216,230)
pg.init()
win=pg.display.set_mode((win_width,win_height))
pg.display.set_caption('My Template')
clock=pg.time.Clock()
#GROUPS-------------------------------------------------------
hero = pg.sprite.Group()
player1=Player(win_width,win_height)
hero.add(player1)
run=True
while run:
#Process Events
for event in pg.event.get():
if event.type==pg.QUIT:
run =False
#Render or Draw
win.fill(LIGHT_BLUE)
hero.draw(win)
#Update game
pg.display.update()
clock.tick(fps)
hero.update()
谁能找出运动模糊的原因。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)