只做了一个简单的游戏 demo,实现切割的效果,没有做完整的游戏,有兴趣可以自己尝试去完成完整项目。
水果的生成。这个可以根据自己需要,调整水果出现的位置,运动的轨迹,本篇因为主要讲切割效果的实现,就简单的从屏幕上方往下方掉落,只是 x 坐标和旋转角度做随机,然后使用 cc.tween 做简单的运动。
水果预制体。考虑到水果种类、大小、切割后的效果不一致,就把每一种水果都单独做了一个预制体,所有水果共用一个水果的逻辑控制脚本 Fruit。
单独水果预制体的实现。单个预制体,分为水果和炸弹两种,还可以根据自己的需要添加其他类型,比如道具什么的。实现方法,可以根据不同的种类,做修改和定制开发。
普通的水果预制体,分两部分,正常状态和切开状态,以苹果为例,参考下图所示。
正常状态
切开状态
把正常状态、切开状态组装到一起,大小控制到一样,这样的话,切开状态一开始和正常状态其实是一样的。
游戏一开始的时候,显示正常状态,游戏结束以后,隐藏正常状态,显示切开状态,切开的两部分,分别添加刚体,赋予两个不同的速度,开启物理系统,就能模拟水果被切开状态了。
游戏过程中,判断触摸起始点和结束点,触摸结束后,判断两点间的连线,与屏幕中的水果、炸弹是否有接触即可。判断的时候有两种情况,一种相交,一种是包含,具体如下图代码。
如果判断划到的是炸弹,可以根据需要播放动画,然后停掉游戏,屏幕中掉落的水果,可以通过移除所有动画来控制:
cc.director.getActionManager().removeAllActions()
掉落的刚体,可以暂停物理系统来控制:
cc.director.getPhysicsManager().enabled = false;