如何将多个 SKSpriteNode 松散地保持在一起
How to keep multiple SKSpriteNode loosely together
如何确保卡片始终彼此靠近,如下所示?
玩家可能会选择一张或多张牌,我需要确保剩余的牌重新拼接在一起。此外,如果玩家放弃选择(即抽出和释放),他们需要一起回来。
构建它的最佳方法是什么?
我不知道 "best way",但一种方法是有一个占位符节点,当您的卡不在占位符上的 (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{[=12=].position = [=12=].position}
}
如何确保卡片始终彼此靠近,如下所示?
玩家可能会选择一张或多张牌,我需要确保剩余的牌重新拼接在一起。此外,如果玩家放弃选择(即抽出和释放),他们需要一起回来。
构建它的最佳方法是什么?
我不知道 "best way",但一种方法是有一个占位符节点,当您的卡不在占位符上的 (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{[=12=].position = [=12=].position}
}