В настоящее время я пытаюсь, чтобы моя камера следовала за «шаром» моего игрока всякий раз, когда игрок перемещается. Я установил положение камеры так, чтобы оно перемещалось в положение x шара всякий раз, когда шар перемещается, однако по какой-то причине, когда шар перемещается быстро, SKCameraNode дает сбои и заикается, как будто он пытается догнать положение узла. Я читал, что это связано с тем, что физика запускается после фактического обновления(), но я понятия не имею, как решить эту проблему. Есть ли способ решить эту проблему?
ПРИМЕЧАНИЕ. Я не хочу, чтобы камера всегда центрировалась на «сфере», а немного задерживалась, когда она следует за сферой, чтобы придать ей ощущение свободного движения. (если это имеет смысл)
import SpriteKit
class GameScene: SKScene {
var orb = SKSpriteNode()
var Touch: UITouch?
let theCamera: SKCameraNode = SKCameraNode()
override func didMoveToView(view: SKView) {
let orbTexture1 = SKTexture(imageNamed:"orb.png")
orb = SKSpriteNode(texture: orbTexture1)
orb.name = "Orb"
orb.position = CGPointMake(300, 95)
self.addChild(orb)
theCamera.position = CGPointMake(300, 0)
theCamera.name = "Camera"
self.addChild(theCamera)
self.camera = theCamera
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch in touches {
if nodeAtPoint(touch.locationInNode(self)).name == "Orb" {
Touch = touch as UITouch
}
}
}
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch in touches {
if Touch != nil {
if touch as UITouch == Touch! {
let location = touch.locationInNode(self)
orb.position = location
}
}
}
}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
let action = SKAction.moveToX(orb.position.x, duration: 0.5)
theCamera.runAction(action)
}
}