在线体验地址
https://la-vie-est-belle.github.io/bgslide-8dir/
Cocos Store 购买地址:
https://store.cocos.com/app/detail/7568
运行效果
滑动方向分别是:上、下、左、右、左上、右上、左下、右下
可通过接口自定义进行调整,可调整的内容有:滑动速度、滑动方向、行列图案个数以及图案大小。
实现原理
首先要生成9个跟画布同等大小的背景,并将他们按照九宫格的样子进行放置。
接下来就是确定图案在每行每列上的数量以及大小。bg预制体上挂有Layout组件,Cell Size的大小即图案大小。Layout组件的其他属性我们可以在代码中根据设置的图案行列数量来动态设置,确保图案间隙合适,整体在画布上居中即可。
最后就是移动各个背景节点即可,9个背景节点往同一方向移动,当快要出现黑边时,立即重置9个背景节点的位置。比方说现在是往左上移动,那当九宫格中右下背景节点移动到屏幕中心后(再移动就会出现黑边),立即重置各个背景节点的位置,恢复原状。
背景颜色和图案颜色我们完全可以自定义,这样也让游戏看起来更加生动有趣。
bgColorHexArray: Array<string> = ['FDF3E9', 'D2E1F8', 'BAD5F0', 'F5E7DC', 'E8F2D7', 'DBEEDB', 'E7DDD4', 'E3E8E2'] // 背景颜色
patternColorHexArray: Array<string> = ['BEBEBE'] // 图案颜色
/* 设置背景颜色 */
private setBgColorRandomly() {
let randomwIndex = Math.floor(Math.random() * this.bgColorHexArray.length)
for (let i=0; i<this.bgArray.length; i++) {
this.bgArray[i].getComponent(Sprite).color = new Color().fromHEX(this.bgColorHexArray[randomwIndex])
}
}
/* 设置图案颜色 */
private setPatternColorRandomly() {
let randomwIndex = Math.floor(Math.random() * this.patternColorHexArray.length)
for (let i=0; i<this.bgArray.length; i++) {
for (let j=0; j<this.bgArray[i].children.length; j++) {
this.bgArray[i].children[j].getComponent(Sprite).color = new Color().fromHEX(this.patternColorHexArray[randomwIndex])
}
}
}
用到的资源就只有下面这些:
BackgroundSlide.ts就是实现背景滑动的代码,需要将其挂载到Canvas节点上;
bg.prefab是空白图片的预制;
partter.prefab就是图案预制;
pattern.png就是图案,可以替换成自己喜欢的;