上一篇忘说道,该系列严格意义上对纯新手不太友好,因为不会较系统的过一遍怎么开发拼图小游戏,更多的只是提下思路,说一下里面的关键实现方法。如果纯新手有需求麻烦私聊在下。
上一篇说道,做一款拼图小游戏,需要解决的基础问题有:
1)图片的处理,是一开始就将图片用切图软件切好,还是通过代码来实现图片切割效果;
2)块图片的顺序打乱;
3)如何判断图片拼回了原样。
那么顺序了解下上面说的问题。
一、图片的处理,是一开始就将图片用切图软件切好,还是通过代码来实现图片切割效果。
首先是根据项目需求来看,如果需求是:
“要求同样的图片,可以按照2x2,3x3等格式进行切割”,那程序能实现的话就尽可能程序实现,可以稍微减轻美术的压力(当然你和美术有仇就随意了)
“块图片不是矩形,则是带凹凸形状的”,这种如果不要求随机性的话,那美术能实现就让美术实现吧。(当然如果要求随机性,那就还是只能程序上了,至于怎么实现,shader,mask之类的套路可能可行,菜鸡本鸡没试也没想过)
功能怎么实现,很大程度上要根据策划要求来写,除非开发者有丰富经验,否则不建议自己脑补这个功能以后可能会怎么扩展,不但增加了开发难度,还可能发现这个功能最后还被舍弃了。
在这个demo中,我们假设块图片是规则的矩形,故我们直接采用“代码切割图片”的方法来实现功能。
通过百度(百度大法好),得知CocosCreator中,SpriteFrame类中,提供了一个方法
通过传入一个Rect类型参数,该方法可以直接修剪图片的可显示范围。从而实现我们的目的,下面附上代码实现。
interface SfGridInfo {
x: number,
y: number,
width: number,
height: number
sf: cc.SpriteFrame,
}
/** 切割SpriteFrame */
private _cutSpriteFrame ( sf: cc.SpriteFrame, col: number, row: number ) {