要山寨flappyBird,首先得要有资源!!!教你如何将这死鸟的资源给拆出来!
哥最近手残,游戏打多了,代码敲多了之后,我发现我的手指的神经有点不听使唤,因此flappybird我只能拿到个位数的分数(当然从来没看过什么高分教程或者使用什么作弊方法)
但是我还是怒了,我打算弄一个水管能让我自动钻过去的flappybird!
我在网上找了一个web版的鸟的资源,那过来之后越发觉得这资源丑陋,而且极为不全,背景都没有,我又怒了
想想,最原生态的资源就是游戏包里面的资源,所以,我打算从里面把他拆出来!
1.从像素鸟的apk里面找到那张通过texturePacker之类的工具拼过的图片,对,没错,拿个解压软件打开apk,找呀找!就是assets\gfx\atlas.png
2.这是一张拼过的图片,要知道这张图片是怎么拼出来的,总得找到配置文件把,继续找,就是res/raw/atlas.txt打开这文件,你会发现这么一下东西
要怎么解读这些数字呢?且听如下分解
首先,每一行代表一个图片资源,第一个不用猜都知道,是文件名
第二个和第三个分别是图片的宽度和高度,单位是像素
第四个和第五个分别是图片左上角的定点的x坐标和y坐标,这是他们的坐标占整张图片的比例(换句话来说就是当整张图片长宽为1时这张图片左上角顶点的坐标)
第六个和第七个分别是图片宽度和高度所占总长度和总宽度的比例
3.了解了以上信息之后的程序员都会不由得微微一笑,看老子不把你给切出来!你要用ps慢慢切,我不拦着你,但是让电脑自动给我切好会带来更爽的赶脚!
切图,我用python + opencv(这玩意儿我在搞我树莓派的时候也在window上面搭好了环境,所以,毫不犹豫),要找怎么配环境呢就搜一下“python opencv 环境搭建”
代码么,我加上注释就贴在下面了
- import cv2.cv as cv
- import os
- img = cv.LoadImage("e:/output/atlas.png", -1) #读取原图(这就是那张拼过的图片,我改了一下名字)
- mask = cv.LoadImage("e:/output/atlas.png", 0) #读取mask
- width, height = cv.GetSize(img)
- img2 = cv.CreateImage((width, height), 8, 4) #创建一张背景透明的图片
- cv.Copy(img, img2, mask) #copy过去
- file = open("e:/output/atlas.txt") #这是输入的文件
- for line in file:
- strs = line.split(" ")
- fileName = strs[0]
- imgWidth = int(strs[1])
- imgHeight = int(strs[2])
- imgX = float(strs[3])*width
- imgY = float(strs[4])*height
- cv.SetImageROI(img2, (int(imgX), int(imgY), imgWidth, imgHeight)); #设置感兴趣的区域
- cv.SaveImage("e:/output/" + fileName + ".png", img2) #根据读取到的文件名保存到这个路径下
4. 抄完哥的代码之后直接就run一把,你会惊奇的发现你的输出文件夹里面全都是这鸟游戏的素材了,哈哈,获取素材大功告成,下面就是将图片全贴到哥的小游戏里了
5. 对于经过上面步骤不能拿到素材的童鞋们,能获取到素材的哥们给他们默哀一分钟吧!
6. 再来一个图,让你们羡慕一下
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。