(原创)SpriteKit+Swift学习笔记(一)-父节点坐标系

最近一个月硬是啃下了Swift和SpriteKit,回首这一个月,有垂头丧气,也有得意忘形,但是遇到最多的,还是无助和无奈。众所周知,SpriteKit推出只有一年的时间,虽然苹果文档一直非常坚挺,但是SK和cocos、unity的普及程度、受欢迎程度和易用程度还有很大的距离,所以使用的人也很少。且不说国内资料凤毛麟角,国外相关教程和资料也不是很多,即便找到了,也只能教你如何做小物件和简单的功能,当你遇到自己个性化的需求或者技术问题,就倍感无助了(如果结合Swift语言,就更少的可怜了)。因此,就最近一个月的学习经历,整理出一些常见的问题,希望能帮助到同样在学习的人,节选自我的为知笔记。

坐标系

直接上代码

var pipePair = SKNode()
var pipeUp:SKSpriteNode = SKSpriteNode(texture: pipeUpTexture)
pipeUp.position = CGPointMake(0, y + pipeUp.size.height)
pipePair.addChild(pipeUp)

上面这段代码仿照swift版flappy bird源码所写。坐标系是非常常用也非常重要的一个概念。我们经常会需要添加大量节点到游戏场景中,如何妥善管理各个节点的坐标和从属关系就非常重要。

以上面代码来说,创建了一个SKNode节点pipePair,用来携带一对水管(这里我只添加了一个向上的水管),然后把水管添加到pipePair上。如果我们直接创建两个水管,需要设置两次坐标,两次向左平移动作(细节参见SKAction.moveByX())。如果设置一个父节点,用来携带这两个水管,那么只需要设置父节点的左平移动作,父节点会带着子节点一起向左移动,就像你提着两个水桶走路一样,大大简化了参数设置,子节点不需要设置任何动作就可以和父节点同步运动。不光如此,这样还简化了子节点的坐标设置。

The position of the node in its parent’s coordinate system.
红字部分摘自苹果文档,子节点的坐标是相对父节点来设置的(父节点坐标系原点,默认在父节点的正中心,父节点坐标系中心可以通过archor锚点属性来设置),也就是说,如果水管加到pipePair上,将pipePair设置成在屏幕中央,由右向左移动,那么子节点只需要设置Y坐标,一个在上面,一个在下面,就可以了。

是不是大大激发了你的想象力?坦克上带的炮塔,飞机上带的航炮,英雄手里的武器,汽车上的车灯都是可以这样设置的,能做的东西真是太多了。

注意:

如果父节点被移除,子节点也会被移除。所以坦克打出的炮弹,不能add到坦克节点上,否则坦克消失,炮弹也会立即消失。后面我会详细说节点的用法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值