J'ai actuellement créé un jeu avec un joueur. J'ai également créé un écran de personnage où l'utilisateur peut choisir le personnage avec lequel il veut jouer. Comment puis-je faire en sorte qu'un certain score élevé débloque un certain personnage, et permet à l'utilisateur d'équiper ce personnage pour l'utiliser dans le jeu?Comment mettre à jour des personnages déblocables dans le jeu SpriteKit avec Swift 3?
En ce moment, mon joueur a son propre fichier rapide qui définit toutes les propriétés de lui:
import SpriteKit
class Player: SKSpriteNode, GameSprite {
var initialSize = CGSize(width:150, height: 90)
var textureAtlas: SKTextureAtlas = SKTextureAtlas(named: "Rupert")
let maxFlyingForce: CGFloat = 80000
let maxHeight: CGFloat = 900
var health:Int = 1
var invulnerable = false
var damaged = false
var damageAnimation = SKAction()
var dieAnimation = SKAction()
var forwardVelocity: CGFloat = 190
var powerAnimation = SKAction()
init() {
super.init(texture:nil, color: .clear, size: initialSize)
createAnimations()
self.run(soarAnimation, withKey: "soarAnimation")
let bodyTexture = textureAtlas.textureNamed("pug3")
self.physicsBody = SKPhysicsBody(texture: bodyTexture, size: self.size)
self.physicsBody?.linearDamping = 0.9
self.physicsBody?.mass = 10
self.physicsBody?.allowsRotation = false
self.physicsBody?.categoryBitMask = PhysicsCategory.rupert.rawValue
self.physicsBody?.contactTestBitMask = PhysicsCategory.enemy.rawValue | PhysicsCategory.treat.rawValue | PhysicsCategory.winky.rawValue | PhysicsCategory.ground.rawValue
func createAnimations() {
let rotateUpAction = SKAction.rotate(toAngle: 0.75, duration: 0.475)
rotateUpAction.timingMode = .easeOut
let rotateDownAction = SKAction.rotate(toAngle: 0, duration: 0.475)
rotateDownAction.timingMode = .easeIn
let flyFrames: [SKTexture] = [
textureAtlas.textureNamed("pug1"),
textureAtlas.textureNamed("pug2"),
textureAtlas.textureNamed("pug3"),
textureAtlas.textureNamed("pug4"),
textureAtlas.textureNamed("pug3"),
textureAtlas.textureNamed("pug2")
]
let flyAction = SKAction.animate(with:flyFrames, timePerFrame: 0.07)
flyAnimation = SKAction.group([SKAction.repeatForever(flyAction), rotateUpAction])
let soarFrames:[SKTexture] = [textureAtlas.textureNamed("pug5")]
let soarAction = SKAction.animate(with: soarFrames, timePerFrame: 1)
soarAnimation = SKAction.group([SKAction.repeatForever(soarAction), rotateDownAction])
Ce n'est pas tout le code, mais vous obtenez le point.
Puis je dis: let player = Player()
dans mon fichier Gamescene qui attache essentiellement tous les attributs dans le fichier du lecteur à mon lecteur qui sera vu dans la console de jeux vidéo. Même si je suis capable de remplacer le premier joueur par un autre joueur différent, il y a tellement d'animations que je ne sais pas comment tout remplacer à la fois. Je veux définir une condition qui couvre à la fois la classe gamescene et la classe de joueur afin qu'elle puisse simplement sous-estimer certaines images pour d'autres et conserver les mêmes actions.
Nous vous remercions de votre aide!