我有一个pygame精灵动画,在整个动画序列中,精灵的位置和形状都会发生变化(例如-攻击)。如何针对碰撞调整精灵的矩形?
我的图像:在动画的一部分中,我的精灵位于png图像文件(96x64像素)的中心。在动画的另一部分中,我的精灵位于png图像文件的右侧(96x64像素)附近。在动画的另一部分中,精灵会更改形状(由剑的移动引起)。等等
我是否必须做一些数学和计算才能调整碰撞矩形。动画每个帧的子画面效果,还是有一种更简单的方法? 我是pygame的新手,所以我不确定所有不同的功能,也不确定从哪里开始创建不同的rect。每帧。
PS。我使用的是在网上找到的现成的精灵-每帧尺寸为96x64像素
第1、11、22帧:
答案 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
希望这会有所帮助,我的信息来自: