IOS使用SpritKit开发游戏实例
来源:互联网 发布:施工方案生成软件 编辑:程序博客网 时间:2024/05/27 16:40
SpritKit开发的大致流程:
1)实例化一个主View(SKView,通过Xcode创建的spritKit工程,默认的view类型即为SKView)。
2)在主View中创建兵实例化初始场景(SKScene的子类实例化)
3)在SKScene实例化的过程中,给场景中添加SKNode节点,SKNode包括多种类型,如:SKLabelNode,SKSpritNode等。
4)当需要从一个场景跳转到下一个场景,则会使用到SKAction,某一动作出发SKAction,在SKAction中设置当前场景消失,设置一个过渡(SKTransition),然后将这两个动作组合呈一个sequence,通过self.view.presentScene执行场景的跳转。
游戏实例代码:
1)首先通过xcode创建一个spritKit游戏工程,编辑main viewController,创建初始场景,并展示初始场景。
2)初始场景为WelcomeScene,是一个SKScene的子类。默认需要是方法 (void)didMoveToView: view:(这个方法会在当前场景展示之前,自动调用);
在这个方法中设置了一个初始场景的属性,在这个场景中添加了一个LabelNode,默认的实例化Node就在上边调用的createWelcomeNode方法中:
上述只是实例化了一个欢迎页面,下面实现,点击该 场景实现场景的跳转:
代码跳转到了一个ArcheryScene(SKScene的子类)的实例场景,同样会首先默认调用(void)didMoveToView: view:
在这个场景中比较负责,首先这个ArcheryScene类中有两个属性,score(分数)和ballCount(击中球的数目)。然后设置当前view的重力参数,以及设置物理碰撞的协议代理。接着通过initArcheryScene初始化这个场景:
上边这个方法比较复杂,首先添加一个Node ,这是一个图片node。接着SKTextureAtlas需要查看上一篇笔记对此的解释。接着就是初始化小球,并且从一开始就循环执行对应动作。
初始化图片Node的代码:
初始化小球Node的代码:
接着就是实现点击屏幕,小人实现射箭的动画,执行函数touchesBegan
在上述的代码中就会用到上边生成的数组archerAnimation,利用这个数组,执行SKAction animationWithTextures方法,将图片连续播放呈动画。接着是创建射箭的动作,然后将两个动作联合执行。下面是初始化射箭的代码:
在上述代码中,需要注意设置了一些掩码参数,这些参数决定是否可以与其它物体发生碰撞,具体详见 IOS游戏开发的物理引擎基础。
接下来就应该实现箭射出去和球碰撞的代码实现,这个就得使用 SKPhysicsContactDelegate协议的方法。设置号delegate后,通过碰撞掩码判断可以放生碰撞的话,当两个物理碰撞,会执行如下方法:
在上述方法中,首先获取碰撞的joint,将这个joint添加到这个物理世界,然后会将初始的箭的texture(即图片)替换成一个半截的箭,看似好像插进了球一样。
最后是gameOver的代码:
0 0
- IOS使用SpritKit开发游戏实例
- 【iOS开发】GDataXML使用实例
- 【iOS开发】NSXMLParser使用实例
- 【iOS-Cocos2d游戏开发】cocos2d 坐标系使用
- 【iOS-Cocos2d游戏开发】cocos2d 坐标系使用
- 使用spritekit开发iOS游戏 【第一章 入门】
- 10.spritkit征程——使用nodes来新增内容
- iOS开发 -"ASI"使用实例
- (实例)使用libgdx创建开发一个Android游戏
- ListView在Android游戏开发中使用实例代码
- ios游戏开发
- Libgdx开发ios游戏
- ios游戏开发
- UE4 iOS游戏开发
- IOS游戏开发前言
- iOS游戏开发中使用自定义字体的方法
- 【iOS-Cocos2d游戏开发】使用plist文件制作简单精灵
- 【iOS-Cocos2d游戏开发】使用Zwoptex生成plist文件
- IOS游戏开发的物理引擎基础
- 1019_数字黑洞 (20)
- 利用keepalived构建高可用MySQL-HA
- easyui datagrid批量编辑后向后台post数据
- PAT 1065 A+B and C(64bits)
- IOS使用SpritKit开发游戏实例
- 响应式布局
- 【Eclipse】【FAQ】使用eclipse时,无论是点击编译还是选择自动编译还是清除后编译,编译失效,该怎么办?
- IOS多线程后台运行实例
- 算法之分治——期望线性时间的选择(基础版本的选择)
- jquery的is原来不能对id使用
- log4j.properties配置详解
- Android 获取Rom厂商信息
- 操作系统面试大纲