SceneKit编写粗暴版微信跳一跳
2018-04-08 本文已影响244人
_小迷糊_997
前言
今年什么最火,当然是微信小程序,我相信很多人沉迷在如何打败自己的好友让自己登上榜顶中,我也这样的,最近刚好有个项目要用到SceneKit,刚好拿这个小程序练练手,这一篇文章主要介绍游戏项目的主要结构和大致逻辑,下面是目前项目运行的效果。 效果图游戏逻辑
初始化->点击屏幕蓄力->释放跳跃->判断成功->移动相机->生成下一个跳台->下一次跳跃->判断失败->游戏结束
主要代码
- 创建工程
直接新建的Single View App3 - 初始化场景
SceneKit中所有的物体、行为都要在SCNScene中,而SCNScene需要在SCNView中。在Demo中,包括SCNView、SCNScene、floor、camera、light等,这些一开始就要准备好的元素。我为了体现游戏的操作过程,把这些初始化都放在了自己身上懒加载。想要目标始终在视线范围内,我们得在“小人”跳走后让镜头跟随。可是如果一直让镜头跟随小人,会让整个游戏看起来特别晃。所以我让相机跟随站台,每成功跳一次,将相机移动观察新站台。 - 蓄力的过程
蓄力的过程用到了长按手势,对,就和写App里的长按一样。SCNView是基于UIView的,可以直接将手势加在上面。设置longPressGesture.minimumPressDuration = 0;保证短按也能监听到。这里有一个知识点是自定义SCNAction的使用。
很简单地实现了颜色的渐变动画。力量越大,颜色越红。在释放跳跃的瞬间,取消Action即可。 - 最后,游戏结束。
弹出的界面是UIView实现的。SceneKit就是一个framework,可以和其他UIKit之类的完全无缝衔接。
以上,加注释400行代码,粗暴版跳一跳完成。收工!
TODO
- 重构优化代码
- 完善游戏UI
- 增加音效
- 增加基座模型
- 增加不同停留效果的基座
- 增加降落在中心附近时的特效,以及精准降落combo效果
- 修复跳起后在空中伸缩的动画
项目代码获取
想要获取案例源码可以加我QQ:3344964106
最近在研究这一块,想要和我一起学习进步可以加下技术交流群:656315826