Pygame-更改形状/移动碰撞矩形对于精灵

时间:2020-05-27 18:09:34

标签: python-3.x animation pygame

我有一个pygame精灵动画,在整个动画序列中,精灵的位置和形状都会发生变化(例如-攻击)。如何针对碰撞调整精灵的矩形?

我的图像:在动画的一部分中,我的精灵位于png图像文件(96x64像素)的中心。在动画的另一部分中,我的精灵位于png图像文件的右侧(96x64像素)附近。在动画的另一部分中,精灵会更改形状(由剑的移动引起)。等等

我是否必须做一些数学和计算才能调整碰撞矩形。动画每个帧的子画面效果,还是有一种更简单的方法? 我是pygame的新手,所以我不确定所有不同的功能,也不确定从哪里开始创建不同的rect。每帧。

PS。我使用的是在网上找到的现成的精灵-每帧尺寸为96x64像素

第1、11、22帧:

enter image description here enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

自从我与Pygame合作以来已经有一段时间了,但是我相信您可以使用pygame.mask对象。遮罩基本上是具有图像前景的精确轮廓的对象。它需要更多的计算能力,但是如果只为一个主要角色创建一个遮罩,那么应该可以。 您可以根据图像创建遮罩:

myMask = pygame.mask(myImage)

然后您可以使用其rect或创建一个新的曲面以使用:

myRect = myMask.get_rect()  # Returns the pygame.Rect object that conatains mask, or:
mySurface - myMask.to_surface()  # Returns a pygame.Surface object of the mask

希望这会有所帮助,我的信息来自:

https://www.pygame.org/docs/ref/mask.html