我正在尝试编程功能,允许用户更改" Ghost"一个不同的形象。
这是我的代码:
Ghost = SKSpriteNode(imageNamed: "Ghost17")
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
if defaults1.integer(forKey: "Sphere") == 2 {
Ghost = SKSpriteNode(imageNamed: "Ghost13")
}
if defaults1.integer(forKey: "Sphere") == nil! {
Ghost = SKSpriteNode(imageNamed: "Ghost2")
}
self.addChild(Ghost)
我正在使用UserDefaults在viewContollers之间发送信息。
当我点击将默认值1设置为2的按钮时,会弹出新图像,但它的行为并不像它应该的那样。我不知道如何解决这个问题,如果您需要更多信息,请询问。
答案 0 :(得分:3)
更改纹理时,请尝试使用:
Ghost.texture = SKTexture(imageNamed: "Ghost13")
而不是:
Ghost = SKSpriteNode(imageNamed: "Ghost13")
这只会更改节点的纹理属性,而不是重新初始化它。您可能遇到问题,因为您在重新初始化时重置了该节点。
希望这有帮助!