【发布时间】:2020-07-03 18:20:55
【问题描述】:
无法在 pygame 中移动玩家
所以,我试图在 pygame 中创建一个简单的物理系统。我的主要目标是添加一个 Y 重力功能,它会在激活时移动玩家。我已经尝试过几次让它工作,但我想我错过了一些东西。
代码如下:
class Physic:
def __init__(self, color, master, type, sizeX, sizeY, pos=[0,0]):
self.master = master
self.color = color
self.type = type
self.sizeX = sizeX
self.sizeY = sizeY
self.x = pos[0]
self.y = pos[1]
self.moveX = 0
self.moveY = 0
self.create_Object()
def create_Object(self):
if self.type == 'rect':
self.rect()
def rect(self):
return pygame.draw.rect(self.master, self.color, (self.x, self.y, self.sizeX, self.sizeY))
def drag(self):
for event in pygame.event.get():
if event.type == pygame.mouse.get_pressed()[0]:
self.x = pygame.mouse.get_pos()
def add_gravity(self):
self.moveY += 3.2
self.update_pos()
def update_pos(self):
self.y += self.moveY
self.x += self.moveX
在主脚本中我写了这个:
def game():
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.fill(WHITE)
player = object.Physic(BLUE, screen, 'rect', 50, 50, [POS[0], POS[1]])
player.add_gravity()
# platform = object.rect(screen, RED, [30, 30], 100, 30)
# physics.add_collider(player, platform, POS[0])
pygame.display.update()
game()
你知道我错过了什么吗?
【问题讨论】:
-
我相信你只是在更新 self.y 而不是 pos 本身,尝试打印 pos 值看看它是否正在更新。
标签: python function oop pygame gravity