pygame 移开的矩形留痕迹_使用pygame进行Python矩形碰撞处理

在pygame游戏中,遇到玩家矩形碰撞后如何处理移动和速度的问题。讨论了通过对象更新和碰撞检测避免矩形移动后留下痕迹的方法,并给出了面向对象的解决方案。
摘要由CSDN通过智能技术生成

在过去的几天里,我一直在对这个主题进行广泛的研究,我似乎无法找到我的确切问题的答案.

所以,我有一个简单的游戏设置,我将玩家设置为0,0,宽度为10×10

player= pygame.Rect(0, 0, 10, 10)

除此之外,玩家的速度为x:0,y:10,这将使他下降(y为正,因为屏幕的原点位于左上角.)

我有一个0,100的图块,如图所示:

dirt= pygame.Rect(0, 100, 10, 10)

所以,我怎么能处理碰撞,我已经知道我可以用Rect.colliderect(Rect)来检测它.

我尝试了几种方法,但遇到了一些问题:

当他击中某个东西然后移动他时,我无法将玩家的速度降低到0

直到他刚刚接触物体,因为这仍然导致行走问题,当他走路时,我在x上施加10速度,但不幸的是,游戏仍然处理他正在下降并且碰撞和侧向移动,所以它只是让他回来到他开始的地方.

我是一个初学者,所以一个简单的答案将不胜感激,我不想使用任何第三方模块,如果我不必使用pygame.

更新:

以下是我尝试过的一些粗略测试代码:

def sim(obj, time, world):

time= time / 1000

obj.physProp['vel']= (obj.physProp['vel'][0] + (accel[0] * time), obj.physProp['vel'][1] + (accel[1] * time))

if obj.physProp['vel'][1] > terminalY:

obj.physProp['vel']= (obj.physProp['

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值