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
原创粉丝点击