SpriteKit – Nodes ajustant la position un tout petit peu

J'ai un certain nombre de nœuds individuels (tuiles) qui constituent l'arrière-plan de mon jeu. Ils sont chacun 32x32p, et sont positionnés côte à côte pour former sol / toit / obstacles. Je charge une carte à partir d'un file JSON et positionne les noeuds sur un calque d'arrière-plan / noeud en fonction du contenu du file JSON lorsque la scène est initialisée.

Cela fonctionne très bien, cependant, je rencontre quelques bugs lors du déplacement de la couche de fond / le moteur physique fait son truc. Certains nœuds se déplacent d'un point / pixel les uns par rapport aux autres, créant ainsi un écart entre eux. Et comme l'arrière-plan est de couleur différente, cela a l'air vraiment mauvais.

Le problème se produit principalement plus loin sur la carte (pas tout de suite), en même time que j'applique des impulsions au joueur ou que le moteur de physique rebondit sur le joueur (ou similaire).

Voici une photo qui illustre mon problème:

Image illustrative. Cliquez pour ouvrir dans un nouvel onglet (Cliquez pour ouvrir dans un onglet séparé)

Comme vous pouvez le voir, juste entre les o et d dans les nœuds , il y a un écart (plus facilement visible dans l'image en taille réelle dans le lien). Il y a de nombreuses lacunes comme celles-ci survenant de time en time pendant le jeu, et elles n'apparaissent que pendant une fraction de seconde ou deux. Parfois, ils restnt quand le joueur arrête de bouger.

Je déplace le joueur dans le didSimulatePhysics en augmentant / diminuant sa x-value . Puis enfin dans le didSimulatePhysics j'appelle cette méthode pour centrer le worldNode sur le lecteur:

 - (void)centerViewOn:(CGPoint)centerOn { CGFloat x = Clamp(centerOn.x, self.size.width / 2, _bgLayer.layerSize.width - self.size.width / 2); _worldNode.position = CGPointMake(-x, _worldNode.position.y); } 

Le worldNode contient à la fois le bgLayer qui contient tous les nœuds d'arrière-plan individuels, et le joueur lui-même.

Quelle est la meilleure façon de résoudre cela? Une solution plausible pourrait être de faire chaque tuile 33x32p, de sorte qu'ils se chevauchent. Dans ce cas, vous ne verrez pas les lacunes se produire maintenant et puis. Mais je pense qu'il vaudrait mieux "tuer" le problème plutôt que de le cacher. Quelqu'un a-t-il de l'expérience dans l'élaboration de sa carte? Ou est-ce que quelqu'un a déjà connu les mêmes problèmes avant? Et si oui, comment l'avez-vous résolu?

Merci d'avance!

Ceci est la casting vers la solution Int basée sur le commentaire @ LearnCocos2D:

 - (void)centerViewOn:(CGPoint)centerOn { CGFloat x = Clamp(centerOn.x, self.size.width / 2, _bgLayer.layerSize.width - self.size.width / 2); _worldNode.position = CGPointMake(Int(-x), Int(_worldNode.position.y)); }