如何从游戏场景调用动作

时间:2017-01-28 04:36:47

标签: ios swift sprite-kit

在我的Sprite-kit游戏场景中,我尝试添加粉红/脉冲动作。我不知道如何调用游戏视图控制器。在一个简单的UIViewController我可以简单地启动:

viewController.addPulse    

但是在Sprite-kit游戏场景中,我不确定如何调用它。 下面是我尝试的代码,它在以下行中给出了错误:

let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(GameViewController.addPulse))    



 if defaults1.integer(forKey: "Sphere") == 13 {
        Ghost = SKSpriteNode(imageNamed: "moon")
        Ghost.size = CGSize(width: 50, height: 50)
        Ghost.position = CGPoint(x: self.frame.width / 2 - Ghost.frame.width, y: self.frame.height / 2)
        Ghost.physicsBody = SKPhysicsBody(circleOfRadius: Ghost.frame.height / 1.4)
        Ghost.physicsBody?.categoryBitMask = PhysicsCatagory.Ghost
        Ghost.physicsBody?.collisionBitMask = PhysicsCatagory.Ground | PhysicsCatagory.Wall
        Ghost.physicsBody?.contactTestBitMask = PhysicsCatagory.Ground | PhysicsCatagory.Wall | PhysicsCatagory.Score
        Ghost.physicsBody?.affectedByGravity = false
        Ghost.physicsBody?.isDynamic = true
        Ghost.zPosition = 2
        self.addChild(Ghost)
        Ghost.isUserInteractionEnabled = true
        let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(GameViewController.addPulse))
        tapGestureRecognizer.numberOfTapsRequired = 1
        Ghost.addGestureRecognizer(tapGestureRecognizer)

1 个答案:

答案 0 :(得分:4)

我担心你会将UIKit个元素与Sprite-kit个元素混合在一起,让您将场景主持的容器与场景本身混淆。

SKViewUIView子类。它将Sprite-kit内容包装在可以像任何其他UIView一样使用的视图中,实际上它通常具有关联的视图控制器。

场景是SKScene类。它提供了实现游戏所需的回调(物理,SKNode子类元素,动作,更新..)。

通常情况下,当您展示场景以换出游戏内容时,视图会保持不变。

所以我严重怀疑你想用你的代码实现什么,如果你想做一个显示脉冲的动作,你应该在你的场景中构建和调用这个方法,而不是UIViewController主持你的游戏..