使用带有集成游戏套件的普通游戏应用程序设置。在场景加载我添加了
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)
}
这样运行正常并且精灵按照需要移动,但是在原始位置似乎有一个精灵的副本。我错过了什么当然,它不需要在每次更新时删除和添加
答案 0 :(得分:1)
之所以发生这种情况是因为你应该使用(作为" hello world" Sprite-kit游戏模板语法):
override func didMove(to view: SKView) {}
而不是:
override func sceneDidLoad() {}
似乎sceneDidLoad
被触发两次,xCode首先设置场景的虚拟版本,然后是真实场景。关于它还有一个bug。
您的代码输出:
输出 didMove(to view:
:
关于你的评论看一下这张图片(它来自Xcode版本8.2.1 - 新项目 - 游戏模板(spritekit):