pygame实现图像自选转

像素鸟中小鸟需要抬头,然后低头。

这个过程抽象出来,其实是一个图像自旋转的过程。

搜了一下没有这方面的实现讲解,基本清一下的抄文档,告诉你有rotate这个函数。

找了一些开源代码,写的很晦涩,这应该是个很简单的东西,就自己实现了一下。

首先是熟悉接口,pygame提供了几个和旋转相关的接口,如下:

pygame.transform.rotate(image, angle)

图片的话,自己用画图做了一个测试图片,这样比较能察觉出问题。


测试图片

首先用了一个覆盖原image的方式,但是很快就发现了问题。

image = pygame.transform.rotate(image, angle)

pygame实现图像自选转_第1张图片
测试程序1

这个问题很好理解,旋转之后长宽变化,不断旋转,长宽不断膨胀,这显然不是我们想要的效果。

那么换一种思路就是,不修改本身的image,所有转换都只用原图像,这样就不会覆盖原图像。

image_temp = pygame.transfrom.rotate(image, angle)

pygame实现图像自选转_第2张图片
测试程序2

效果好了一些,但是还是有问题,旋转后图片本身的大小变了,相应的中心点也有了偏移,所以还需要对图片进行位置校正,变化的距离就是 

x - (image_temp.x - image.x) / 2

pygame实现图像自选转_第3张图片
测试程序3

有没有更好的解决方式?暂时没有想到,另外旋转的时候有一点点蜂窝点,这个也没看到很好的解决办法。

仅提供一种简单的解决方式,有空再看看如何优化的更好。

你可能感兴趣的:(pygame实现图像自选转)