在我的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)发布于 2017-01-28 16:55:35
我担心你把UIKit元素和Sprite-kit元素混在一起,你把托管场景的容器和场景本身搞混了。
SKView是一个UIView子类。它将Sprite-kit内容包装在一个可以像任何其他UIView一样使用的视图中,事实上,它通常有一个关联的视图控制器。
该场景是一个SKScene类。它提供回调(物理、SKNode子类元素、操作、更新..)需要实现一个游戏。
通常情况下,视图会留在原处,而您可以展示场景来交换游戏内容。
所以我很怀疑你想用你的代码实现什么,如果你想做一个显示脉搏的动作,你应该在你的场景中构建和调用这个方法,而不是在托管你游戏的UIViewController中。
https://stackoverflow.com/questions/41906378
复制相似问题