В SpriteKit, заставьте стрелку следовать за целью, как только она поразит - PullRequest
0 голосов
/ 02 октября 2018

В моей игре есть цель, которая двигалась справа налево, как только стрелка попадет в нее, они должны двигаться вместе справа налево.Я смог заставить его работать, но он не идеален - стрелка дрожит от цели и иногда исчезает с экрана.Я считаю, что это связано с частотой кадров, но я не уверен, как это исправить.

Это мой код:

func arrowCollideWithTarget() {
    arrows.last!.physicsBody?.velocity = CGVector(dx: 0, dy: 0)

    let followAction = SKAction.customAction(withDuration: TimeInterval(Int.max)) {
        node, elapsedTime in

        node.position.x += (self.targetLocation?.x)! - (self.latestTargetLocation?.x)!
    }

    arrows.last!.run(followAction)

}

1 Ответ

0 голосов
/ 03 октября 2018

Очень простое решение, move(toParent)

arrows.last!.move(toParent:target)

Теперь никаких действий не требуется, и перемещение (toParent) изменяет положение стрелки, чтобы соответствовать положению, в котором она находится в системе координат целей, поэтомустрелку также не нужно переводить.

По сути, это работает именно так, как вы думаете в реальной жизни.

Когда стрелка попадает в цель, вы ожидаете, что стрелка станет «дочерью»этой цели.Поэтому, если вы взяли цель и переместили ее на новую стену, стрелка пошла бы вместе с ней, потому что стрелка прикреплена к цели.

...