Я делаю игру с помощью Sprite Kit, и я хочу иметь возможность перетаскивать коробки, когда они перемещаются по экрану.Перетаскивание детей одного и того же спрайта
Вот суть кода: Я порою коробки на таймере, и они перемещаются по экрану.
override func didMoveToView(view: SKView) {
let timer = NSTimer.scheduledTimerWithTimeInterval(2.0, target: self, selector: Selector("spawnBox"), userInfo: nil, repeats: true)
}
func spawnBox() {
/* Set up the box */
addChild(box)
let boxMoveDown = SKAction.moveToY(-100, duration: 5.0)
let actionDone = SKAction.removeFromParent()
box.runAction(SKAction.sequence([boxMoveDown, actionDone]))
}
Но проблема в том, я, как я могу переместить конкретный ребенка, который я прикасаясь, не затрагивая все остальные «дети»? Я понимаю, что на данный момент каждый раз, когда я создаю коробку, это точно так же, поэтому я не могу быть конкретным, когда я устанавливаю позицию отдельного ребенка.
Вот что в моих функций touchesBegan и touchesMoved
if let touch = touches.first {
let location = touch.locationInNode(self)
let objects = nodesAtPoint(location) as [SKNode]
if objects.contains(nodeAtPoint(location)) && nodeAtPoint(location).name == "box" {
box.position = location
box.removeAllActions()
}
}
- box.position = location
является то, что изменение потребности.
Надеюсь, вы понимаете мою идею. Я попытался сохранить код в том, что необходимо. Я совершенно новый для Sprite Kit, который вы, вероятно, можете сказать.
Когда вы обнаруживаете, что выбран узел, вам нужно удалить «SKAction», из-за чего узел перемещается вниз по сцене. – 0x141E