SceneKit编写粗暴版微信跳一跳

前言

今年什么最火,当然是微信小程序,我相信很多人沉迷在如何打败自己的好友让自己登上榜顶中,我也这样的,最近刚好有个项目要用到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

猜你喜欢

转载自blog.csdn.net/pangziaichi/article/details/79859438