【问题标题】:Working with SKSpritenodes and textures使用 SKSpritenodes 和纹理
【发布时间】:2016-10-19 23:35:46
【问题描述】:

我正在尝试编写允许用户将“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 在 vi​​ewContollers 之间发送信息。

当我单击将 defaults1 设置为 2 的按钮时,新图像会弹出,但它的行为并不像应有的那样。我不确定如何解决这个问题,如果您需要更多信息,请询问。

【问题讨论】:

    标签: ios swift xcode sprite-kit


    【解决方案1】:

    当改变纹理时,尝试使用这个:

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

    而不是:

    Ghost = SKSpriteNode(imageNamed: "Ghost13")
    

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

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多