2017-07-27 6 views
1

Je fais un jeu avec une configuration de caméra qui pourrait être comparée à celle d'Agar.io. Il peut monter, descendre, gauche et droite. Cependant, dans Agar.io, vous êtes limité à l'espace de la carte. Si vous rencontrez un côté de la carte, vous devez revenir en arrière.Swift: Enveloppe/boucle/répète les nœuds en dehors des limites de la caméra?

Cependant, dans mon jeu, je veux que l'appareil photo «enveloppe» le côté opposé de la carte.

Je ne pouvais pas trouver des exemples, donc je fait mon propre:

// This is in an SKScene 

private func wrapNodes() { 

    let camPos = camera!.position // SKCameraNode of current scene 

    for node in self.children { 

    let nodePos = node.position 

    let x = camPos.x - nodePos.x 
    if x > spawnRect.width * 0.5 { 
     node.position.x = nodePos.x + spawnRect.width // spawnRect = map size 
    } else if x < -spawnRect.width * 0.5 { 
     node.position.x = nodePos.x - spawnRect.width // spawnRect = map size 
    } 

    let y = camPos.y - nodePos.y 
    if y > spawnRect.height * 0.5 { 
     node.position.y = nodePos.y + spawnRect.height // spawnRect = map size 
    } else if y < -spawnRect.height * 0.5 { 
     node.position.y = nodePos.y - spawnRect.height // spawnRect = map size 
    } 
    } 
} 

surprise en raison de mes terribles compétences en mathématiques, cela semble effectivement travailler.

Cependant, il y a deux problèmes avec ceci. Le premier est que je ne me fais pas confiance du tout, et je sens que j'ai dû faire une erreur quelque part. La seconde est qu'il faut beaucoup de temps pour parcourir tous les nœuds de la scène, donc j'espérais qu'il y aurait un moyen plus rapide, mais je ne peux pas en trouver un. Donc, je me demandais si quelqu'un connaissait une façon plus rapide de le faire.

Toutes les idées seraient appréciées!

Répondre

0

Je ne vois pas comment cela pourrait être plus rapide ou mieux pour le moment, donc je pense que je vais laisser ce message ici au cas où quelqu'un en aurait besoin dans le futur