Est-il possible de ralentir délibérément le FPS de la scène SpriteKit? Je me demandais si c'était possible de faciliter le débogage de mon jeu.Ralentir volontairement FPS Spritekit
Répondre
Vous pouvez faire quelque chose comme ça aussi (comme un ajout à la réponse de crashoverride777) en ralentissant les nœuds ou la physique:
Pour faire des nœuds d'entrer dans slow-mo (vous pouvez faire par noeud):
self.speed = 0.2 //where self is a scene
ou à faire de même avec la physique:
self.physicsWorld.speed = 0.2 //where self is a scene
Vous pouvez modifier la valeur FPS de votre SKView
lorsque vous chargez la première scène de votre GameViewController
.
Quelque chose comme:
if #available(iOS 10.0, *) {
skView.preferredFramesPerSecond = 30 // 30 FPS
} else {
skView.frameInterval = 2 // Deprecated (1 default = 60FPS so 2 would = 30 FPS)
skView.preferredFrameRate = ... // Deprecated
}
Comme Whirlwind si gentiment fait remarquer dans sa réponse.
« De plus, ce ne sera pas quelque chose de ralentissement, vous sautez des cadres que vous voyez, par exemple si vous avez un noeud qui se déplace du point A au point B en 5 secondes, et vous changez preferredFrameRate à 30fps, le noeud passera de A à B toujours dans 5 secondes, plutôt que 10. Le seul changement que vous verrez, c'est que certaines images sont sauté. "
SKView
référence API here
Bonne réponse. Aussi 'frameInterval' est obsolète comme expliqué par la classe' SKView' actuelle: '/ * Déconseillé, veuillez utiliser preferredFramesPerSecond. Nombre d'images à ignorer entre les rendus, par défaut à 1 (rendu à chaque image) Le taux de transfert demandé sera preferredFramesPerSecond/frameInterval. */ @available (iOS, introduit: 7.0, obsolète: 10.0) open var frameInterval: Int' –
Salutations pour l'édition. – crashoverride777
@GeneCode Comme on peut le voir dans le commentaire d'Alessandro, cette propriété est disponible uniquement pour iOS 10 et supérieur, donc vous devrez utiliser quelque chose comme ceci: 'si #available (iOS 10.0, *) {...}' si votre cible de déploiement est <10. En outre, cela ne ralentira rien, vous passez simplement les images que vous voyez, par exemple. nœud qui se déplace du point A au point B en 5 secondes, et vous changez preferredFrameRate à 30fps, le nœud passera de A à B toujours dans 5 secondes, au lieu de 10. Le seul changement que vous verrez, c'est que certaines images sont ignorées . – Whirlwind
Cette solution n'est pas robuste. Surtout si vous avez des particules dans le jeu et quand vous avez beaucoup de sprites (la boucle à travers les sprites pourrait poser des problèmes de performance). Mais merci pour votre réponse. – GeneCode
Pourquoi devriez-vous parcourir les sprites dans tous les cas pour les ralentir? Vous changez la vitesse de leur parent ou changez la vitesse d'une scène. @GeneCode – Whirlwind
Aussi cette méthode vous donne la possibilité de ralentir séparément un monde physique, un arbre de nœuds complet, ou un seul nœud par exemple ... – Whirlwind