在我的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)
答案 0 :(得分:4)
我担心你会将UIKit
个元素与Sprite-kit
个元素混合在一起,让您将场景主持的容器与场景本身混淆。
SKView
是UIView
子类。它将Sprite-kit
内容包装在可以像任何其他UIView
一样使用的视图中,实际上它通常具有关联的视图控制器。
场景是SKScene
类。它提供了实现游戏所需的回调(物理,SKNode
子类元素,动作,更新..)。
通常情况下,当您展示场景以换出游戏内容时,视图会保持不变。
所以我严重怀疑你想用你的代码实现什么,如果你想做一个显示脉冲的动作,你应该在你的场景中构建和调用这个方法,而不是UIViewController
主持你的游戏..