2016-01-31 4 views
1

Я пытаюсь добавить 4 спрайта к виду, каждому спрайту в другом углу воображаемого квадрата и повернуть все спрайты вокруг центра. Каков наилучший способ выполнить эту задачу?Группировка нескольких спрайтов в swift

Я знаю, как вращать каждый спрайт, но, возможно, существует способ группировать несколько спрайтов, например, помещать их в контейнер?

How the result should look like

+1

Просто поместите SKSpriteNodes внутри SKNode и вращать, что SKNode – Whirlwind

+0

@Whirlwind предложение должно работать. Ты пробовал? – Stefan

+0

@ Предложение Whirlwind зависит от того, как вы хотите, чтобы спрайты вращаются. Если вы ищете, чтобы спрайты оставались в направлении вверх, пока вы вращаетесь по кругу, вам нужно будет применить еще одну математику, чтобы исправить проблему, но если вы хотите, чтобы спрайт вращался с квадратом, тогда сделайте то, что Вихрь предполагает – Knight0fDragon

ответ

1

Вот мой рабочий код.

import SpriteKit 

let player = SKNode() 
let playerTopLeft = SKSpriteNode(color: UIColor.yellowColor(), size: CGSizeMake(20, 20)) 
let playerTopRight = SKSpriteNode(color: UIColor.yellowColor(), size: CGSizeMake(20, 20)) 
let playerBottomRight = SKSpriteNode(color: UIColor.yellowColor(), size: CGSizeMake(20, 20)) 
let playerBottomLeft = SKSpriteNode(color: UIColor.yellowColor(), size: CGSizeMake(20, 20)) 

class GameScene: SKScene { 

    override func didMoveToView(view: SKView) { 
     backgroundColor = SKColor.blackColor() 

     player.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame)) 
     addChild(player) 

     playerTopLeft.position = CGPoint(x:-40, y:-40) 
     player.addChild(playerTopLeft) 

     playerTopRight.position = CGPoint(x:40, y:-40) 
     player.addChild(playerTopRight) 

     playerBottomRight.position = CGPoint(x:40, y:40) 
     player.addChild(playerBottomRight) 

     playerBottomLeft.position = CGPoint(x:-40, y:40) 
     player.addChild(playerBottomLeft) 

    } 

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 

     for touch in touches { 

      let rotate = SKAction.rotateByAngle(CGFloat(-M_PI_2), duration:1) 
      player.runAction(rotate) 

     } 
    } 
} 
Смежные вопросы