Swift SpriteKit精灵移动但保留原始位置

时间:2017-01-20 15:31:26

标签: swift sprite-kit

使用带有集成游戏套件的普通游戏应用程序设置。在场景加载我添加了

  self.hero = SKShapeNode.init(rectOf: CGSize.init(width: 10, height: 10), cornerRadius: 1)
    if let hero = self.hero {
        let pos = CGPoint.init(x: -50, y: -90)
        hero.lineWidth = 5
        hero.position = pos
    }

    self.addChild(self.hero!)

然后在更新功能中我添加了

 if let hero = self.hero {
        let moveAction = SKAction.moveTo(x: 12, duration: 1)
        hero.run(moveAction)
    }

这样运行正常并且精灵按照需要移动,但是在原始位置似乎有一个精灵的副本。我错过了什么当然,它不需要在每次更新时删除和添加

1 个答案:

答案 0 :(得分:1)

之所以发生这种情况是因为你应该使用(作为" hello world" Sprite-kit游戏模板语法):

override func didMove(to view: SKView) {}

而不是:

override func sceneDidLoad() {}

似乎sceneDidLoad被触发两次,xCode首先设置场景的虚拟版本,然后是真实场景。关于它还有一个bug

您的代码输出

enter image description here

输出 didMove(to view:

enter image description here

关于你的评论看一下这张图片(它来自Xcode版本8.2.1 - 新项目 - 游戏模板(spritekit):

enter image description here