10.spritkit征程——使用nodes来新增内容

10.spritkit征程——使用nodes来新增内容,第1张

概述10.spritkit征程——使用Nodes来新增内容 上文讲到新的场景空无一物,略显凄凉,因此今天我们今天首要任务就是往里面填东西,比如:一架简陋的太空船。友情提示:请勿过分憧憬项目最后会给你呈现一架华丽的飞机。orz….. 我始终坚信把基础知识讲清楚,将全面,简单化比那些所谓的长篇大论、举例无数的书本来的美妙。因此我们首先来理清一下几个东西: 关键的几个概念: SKView: 在SpriteK 10.spritkit征程——使用Nodes来新增内容

上文讲到新的场景空无一物,略显凄凉,因此今天我们今天首要任务就是往里面填东西,比如:一架简陋的太空船。友情提示:请勿过分憧憬项目最后会给你呈现一架华丽的飞机。orz…..

我始终坚信把基础知识讲清楚,将全面,简单化比那些所谓的长篇大论、举例无数的书本来的美妙。因此我们首先来理清一下几个东西:

关键的几个概念:
SKVIEw: 在SpriteKit中扮演着作为视图呈现内容的重要角色,继承于UIVIEw
SKNode: 是SpriteKit中最最最最”老”的祖先,也就是父类。要知道Sprite Kit中最基本的东东就是节点(Node),举个不恰当的例子,分子原子组成了我们的世界(打个比方而已,别较真,博主化学不好),节点就好比是分子原子组成了Sprite Kit的世界!那么世界上其他物种,比如树、泥土、动物都是由分子原子构成才有了形形色色的世界,同理在Sprite Kit世界中,采用继承方式来创建新的“Node”,比如SKSceneSKSpriteNodeSpriteshapeNode等等各司其职,从继承关系来说它们都是源自SKNode,从本身来说不但继承了父类的属性方法,自己又开辟了一条道路。
节点树:首先请你抛开继承关系,来谈谈节点树,现在我们所知道的是在Sprite Kit中都是由Node组成。想象现在我们正在制作一款游戏,先要有一个场景(SKScene),这是根节点;接下来可能需要来个文本(SKLabelNode)来简单说下东西,再来一架飞机(SKSpriteNode),它们都是隶属于场景中的,就是在根节点下分叉成2股;对了飞机上得搞个灯光,因此你在飞机节点上添加一个灯光(可能就是图片拉,当然也是SKSpriteNode),这样在飞机节点下又加了一个节点。是不是有点树的感觉了??

理解完上面的概念,是时候来实战一把了:

通常我们使用SKSpriteNode 类来新增一些场景的内容,它对有纹理和无纹理对象都通吃!本文中我们创建一个没有纹理(无图片)的长方形,美名约:飞船。但是现在由于没有纹理,可能看上去很丑,不过这都预留着,假如有一天你发现了一个合适的图片,就给你的飞船换上吧。实际开发中,你可能需要创建数十个,或者上百个节点来呈现一个丰富的场景,但是基本原理都是差不多的拉!

本文中,首先创建一个飞船的骨架,就是一个长方形,此外还要创建灯光,这里就有两个Sprite node了,但是我们不应该将他们都添加到场景中,为什么?因为灯光要随着飞船移动而移动,所以灯光sprite Node应该添加到飞船这个sprite node上,不难理解吧?

创建一架飞船

SpaceshipScene.swift文件中找到createSceneContents方法添加新内容:

let spaceship:SkSpriteNode = newSpaceship()spaceship.position = CGPointMake(CGRectGetMIDX(self.frame),CGRectGetMIDY(self.frame)-150)self.addChild(spaceship)

实现newSpaceship方法:

func newSpaceship()->SKSpriteNode{    //船体叫做hull    let hull = SKSpriteNode(color: SKcolor.graycolor(),size: CGSizeMake(64,32))    //创建动作 sequence传入的要是一个数组[],里面有4个动作,简单!    let hover = SKAction.sequence            let hover = SKAction.sequence([        SKAction.waitForDuration(1.0),SKAction.moveByX(100,y: 50,duration: 1.0),SKAction.waitForDuration(1.0),SKAction.moveByX(-100,y: -50,])    hull.runAction(SKAction.repeatActionForever(hover))}

现在来Build and Run 下,看看效果。

刚才我们创建了船体,现在来增加飞船的灯光,在newSpaceship函数最下面添加以下代码:

//实例化一个灯光,该函数在下面给出let light1 = newlight()light1.position = CGPointMake(-28.0,6.0)hull.addChild(light1)//实例化第二个灯光let light2 = newlight()light2.position = CGPointMake(28.0,6.0)hull.addChild(light2)

实现newlight代码

func newlight()->SKSpriteNode{    //纯手工敲代码,代码都是官方文档OC写的    //对着文档直接翻译成swift,有不对之处请留言    let light = SKSpriteNode(color: SKcolor.graycolor(),size:CGSizeMake(8,8))    let blink = SKAction.sequence([        SKAction.fadeOutWithDuration(0.25),SKAction.fadeInWithDuration(0.25),])    let blinkForever = SKAction.repeatActionForever(blink)    light.runAction(blinkForever)    return light}
Build and run!!!! 总结

以上是内存溢出为你收集整理的10.spritkit征程——使用nodes来新增内容全部内容,希望文章能够帮你解决10.spritkit征程——使用nodes来新增内容所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1088841.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存