使用SKSpritenodes和纹理

时间:2016-10-19 23:35:46

标签: ios swift xcode sprite-kit

我正在尝试编程功能,允许用户更改" 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的按钮时,会弹出新图像,但它的行为并不像它应该的那样。我不知道如何解决这个问题,如果您需要更多信息,请询问。

1 个答案:

答案 0 :(得分:3)

更改纹理时,请尝试使用:

Ghost.texture = SKTexture(imageNamed: "Ghost13")

而不是:

Ghost = SKSpriteNode(imageNamed: "Ghost13")

这只会更改节点的纹理属性,而不是重新初始化它。您可能遇到问题,因为您在重新初始化时重置了该节点。

希望这有帮助!