Python 如何在pygame中制作重力函数?

Python 如何在pygame中制作重力函数?,python,function,oop,pygame,gravity,Python,Function,Oop,Pygame,Gravity,无法在pygame中移动玩家 所以,我试图在pygame中创建一个简单的物理系统。我的主要目标是添加一个Y形重力功能,当激活时可以移动玩家。我已经试过好几次了,但我想我错过了什么。 代码如下: class Physic: 定义初始化(自身、颜色、主控、类型、大小、大小、位置=[0,0]): self.master=master self.color=颜色 self.type=type self.sizeX=sizeX self.sizeY=sizeY self.x=pos[0] self.y=

无法在pygame中移动玩家

所以,我试图在pygame中创建一个简单的物理系统。我的主要目标是添加一个Y形重力功能,当激活时可以移动玩家。我已经试过好几次了,但我想我错过了什么。

代码如下:

class Physic:
定义初始化(自身、颜色、主控、类型、大小、大小、位置=[0,0]):
self.master=master
self.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_对象()
def创建_对象(自身):
如果self.type==“rect”:
self.rect()
def rect(self):
返回pygame.draw.rect(self.master,self.color,(self.x,self.y,self.sizeX,self.sizeY))
def阻力(自):
对于pygame.event.get()中的事件:
如果event.type==pygame.mouse.get_pressed()[0]:
self.x=pygame.mouse.get_pos()
def附加重力(自身):
self.moveY+=3.2
self.update_pos()
def更新位置(自身):
self.y+=self.moveY

self.x+=self.moveX
你的大问题是,你在主循环中的每一次传球都在重新创建球员,因此看起来好像它被冻结在原地

您还需要限制帧速率,以便控制游戏的速度,从而可以正确设置每帧的加速度

要运行此程序,还需要修复一些其他小问题。我试图更改运行它的最小值,因为关键是修复错误,而不是在您身上重写错误。显然,我必须在它周围添加一些包装代码

尝试此稍微调整的版本:

#/usr/bin/env python
导入回溯
导入pygame
导入系统
帧速率=60
重力=32
屏幕大小=(600800)
白色=pygame.Color(“白色”)
蓝色=pygame.Color(“蓝色”)
位置=(100600)
班级物理:
定义初始值(自身、颜色、母版、类型、大小、大小、位置=(0,0)):
self.master=master
self.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_对象()
def创建_对象(自身):
如果self.type==“rect”:
self.draw()
def牵引(自):
返回pygame.draw.rect(self.master,self.color,(self.x,self.y,self.sizeX,self.sizeY))
def阻力(自):
对于pygame.event.get()中的事件:

#如果event.type==pygame.mouse.get_pressed()[0]:我相信您只是在更新self.y而不是pos本身,请尝试打印pos值,看看它是否在更新。谢谢,我将尝试一下。我刚开始编程,还有很多东西要学。我现在测试了它。这是完美的工作,因为我想,我可以理解的问题非常容易。谢谢