Xcode 9:SKEditorReference不允许动画?

时间:2017-12-05 06:02:08

标签: swift xcode animation

我似乎无法获得通过引用添加的精灵节点(将一个sks文件拖放到Xcode 9中的另一个sks文件中)来制作动画。这似乎是允许的,因为你可以在物理上做这样的事情,但我不确定为什么子节点不会有动画。

实施例 1.从标准的spritekit模板开始 2.添加一个HUD.sks文件,并在某处添加一个颜色精灵,命名为" hudSpriteNode" 3.将HUD.sks文件拖到GameScene.sks场景中 - 将其置于零 4.找到hudSpriteNode(按名称) 5.用.position移动它(有效!) 6.用动画移动它(失败!)

HUD.sks HUD.sks screenshot

GameScene.sks GameScene.sks screenshot

将此代码添加到GameScene.swift

if let testSpriteNode = childNode(withName: "//hudSpriteNode") as? SKSpriteNode {
  print("Found test sprite node")
  print("Test node position 1: \(testSpriteNode.position)")
  testSpriteNode.position = CGPoint.zero
  print("Test node position 2: \(testSpriteNode.position)")
  testSpriteNode.run(SKAction.moveBy(x: 200, y: 200, duration: 4))
}

运行...位置正确移动,但动画失败。

2 个答案:

答案 0 :(得分:2)

请参阅评论中的@Marcel链接。他指出我的帖子主要是通过我的一些额外的更新/验证来实现的。但是,我能够让它工作的唯一方法是将isPaused放在我试图设置动画的精确精灵节点上(在我的ref节点内)。

我在顶级尝试isPaused = false,主要场景确实要移动查看,但没有效果,然后将isPaused = false添加到主参考节点,无效。只有当我添加了isPaused = false时,它才会起作用。实际的精灵(在我添加的ref节点中)我试图制作动画。我从主&中删除了isPaused = false。 ref节点,并且只要isPaused = false仍然在有问题的sprite节点上(我尝试动画的ref节点中的那个节点):success。

底线似乎是参考节点中包含的任何精灵都需要isPaused = false。

答案 1 :(得分:0)

请参阅@Eric帖子。

而不是将其应用于SKSpriteNode本身,而是将其应用于SpriteKit场景的顶层(主场景)对我而言是成功的秘诀。

spriteKitScene?.isPaused = false

这似乎取决于使用的上下文,我正在为SCNPlane中的SpriteKit场景设置动画,然后由ARKit 2处理。

plane.firstMaterial?.diffuse.contents = spriteKitScene

See similar issue on Apple Developer Forums.

注意:在Xcode 10 Beta 6上运行。