#ios #swift #xcode #sprite-kit
#iOS #swift #xcode #sprite-kit
Вопрос:
Я пытаюсь запрограммировать функцию, которая позволяет пользователю изменять «Призрак» на другое изображение.
Вот мой код:
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.
Когда я нажимаю на кнопку, которая устанавливает defaults1 на 2, появляется новое изображение, но оно ведет себя не так, как должно. Я не уверен, как это исправить, если вам нужна дополнительная информация, пожалуйста, спросите.
Ответ №1:
При изменении текстуры попробуйте использовать это:
Ghost.texture = SKTexture(imageNamed: "Ghost13")
Вместо:
Ghost = SKSpriteNode(imageNamed: "Ghost13")
Это только изменяет свойство текстуры узла, а не повторно инициализирует его. Возможно, вы сталкиваетесь с проблемами, потому что вы сбрасываете узел при его повторной инициализации.
Надеюсь, это поможет!