如何将多个SKSpriteNode松散地放在一起

时间:2017-07-29 22:44:38

标签: ios swift sprite-kit skspritenode

如何确保卡片始终保持彼此靠近,如下所示?

enter image description here

玩家可以选择一张或多张牌,我需要确保剩余的卡片一起弹回。此外,如果玩家放弃挑选(那是抽出和释放),他们需要一起回来。

建立这个的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

我不知道“最佳方式”,但有一种方法是拥有一个占位符节点,当你的卡不在占位符上的(0,0)时,将其发回。

示例:

class PlayingCard : SKSpriteNode
{
   override var position : CGPoint
   {
       didSet
       {
           if self.position != CGPoint.zero, actionForKey("reset") == nil
           {
               self.run(SKAction.moveTo(CGPoint.zero,duration:0.5).withKey:"reset")
           }
       }
   }
}

使用:

class GameScene
{
    .....
    //however you are setting this up

    let placeHolder = SKNode()
    placeHolder = placeHolderPosition

    let card = PlayingCard()
    placeHolder.addChild(card)
    self.addChild(placeHolder)
    ....
}

现在请记住,根据您移动卡的方式,可能无法调用didSet,因此您可能必须在更新中执行此操作,或者您可以作弊并在更新中执行:

func update()
{
   ...
// do my stuff
  ...
   //maintain an array of all your playing cards
   playingCards.forEach{$0.position = $0.position}      

}