像素鸟中小鸟需要抬头,然后低头。
这个过程抽象出来,其实是一个图像自旋转的过程。
搜了一下没有这方面的实现讲解,基本清一下的抄文档,告诉你有rotate这个函数。
找了一些开源代码,写的很晦涩,这应该是个很简单的东西,就自己实现了一下。
首先是熟悉接口,pygame提供了几个和旋转相关的接口,如下:
pygame.transform.rotate(image, angle)
图片的话,自己用画图做了一个测试图片,这样比较能察觉出问题。
首先用了一个覆盖原image的方式,但是很快就发现了问题。
image = pygame.transform.rotate(image, angle)
这个问题很好理解,旋转之后长宽变化,不断旋转,长宽不断膨胀,这显然不是我们想要的效果。
那么换一种思路就是,不修改本身的image,所有转换都只用原图像,这样就不会覆盖原图像。
image_temp = pygame.transfrom.rotate(image, angle)
效果好了一些,但是还是有问题,旋转后图片本身的大小变了,相应的中心点也有了偏移,所以还需要对图片进行位置校正,变化的距离就是
x - (image_temp.x - image.x) / 2
有没有更好的解决方式?暂时没有想到,另外旋转的时候有一点点蜂窝点,这个也没看到很好的解决办法。
仅提供一种简单的解决方式,有空再看看如何优化的更好。