Spritekit游戏开发之SKSpriteNode(精灵)二

上一节我们讲了如何用图片创建加入精灵,我们创建了2个精灵,都是用同一张图片

我们加入一段代码,把第二个加入的精灵颜色改变下,改成红色,这个方法我不说,以后讲动作时再讲。

 override func didMoveToView(view: SKView) {
        //用一张图片初始化一个精灵
        let ship = SKSpriteNode(imageNamed: "Spaceship")
        //设置精灵坐标
        ship.position = CGPoint(x: 500, y: 400)
        //添加精灵到当前视图中
        self.addChild(ship)
        
        
        //用一个纹理(也是一张图片)初始化一个精灵
        let texture = SKTexture(imageNamed: "Spaceship")
        let secondShip = SKSpriteNode(texture: texture)
        secondShip.position = CGPoint(x: 500, y: 500)
        self.addChild(secondShip)
        //改变红色
        secondShip.runAction(SKAction.colorizeWithColor(UIColor.redColor(), colorBlendFactor: 1, duration: 0.1))
        
      
        
    }

模拟器截图


我们可以清楚看到,第二个飞船覆盖了第一个,为什么?因为第二个飞船是是在第一个飞船之后addChild当前视图里面的,第一个飞船渲染后,第二个飞船再渲染的,所以第二个能覆盖第一个。我们改变下addChild加入视图的顺序

 
        self.addChild(secondShip)
        self.addChild(ship)
模拟器截图


这样,第一个精灵就覆盖了第二个精灵,但是每个精灵的顺序这样调节太累了,如何用简单的方式设置精灵的渲染次序,有的,就是精灵的zPosition属性

,值越大,越后渲染,太复杂了,这样想吧,值大的精灵就能覆盖值小的精灵

默认精灵zPosition为0.就要通过addChild手动调节加入次序,设置了zPosition,就不需要关心addChild次序了。

当前是第一个覆盖了第二个精灵。我们来改成第二个覆盖第一个,只要第二个zPosition值比第一个大就行。

在原代码底部加入2行

  ship.zPosition = 0
  secondShip.zPosition = 1
模拟器


你看这样,第二个红色的精灵就覆盖了第一个了吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值