3 votes

déterminer si un sprite est à l'écran ou non dans cocos2d

Je veux déterminer si le sprite est dans l'écran ou non dans cocos2d.

J'utilise le code à peu près comme ça.

CGSize winSize = [CCDirector sharedDirector].winSize;

    if (_SmallBlueAlien1.position.x> 0 || _SmallBlueAlien1.position.x > winSize.width || _SmallBlueAlien1.position.y> 0 || _SmallBlueAlien1.position.y > winSize.height)
    {
//Sprite is not in the screen)
}

mais il ne fonctionne pas correctement. corrigez-moi

1voto

ScottPetit Points 814

A moins que vous n'ayez changé le point d'ancrage du sprite, le test ne se fait que si la moitié du sprite est à l'écran. Pour résoudre ce problème, vous devez vérifier si

_SmallBlueAlien1.position.x > [_SmallBlueAlien1 contentSize].texture.width / 2 ;

Vous pouvez suivre ce processus pour toutes les autres interactions.

//Editer

Comme l'a noté phix23, cette méthode ne tient pas compte de la rotation ou de l'échelle, mais devrait fonctionner si vous ne faites ni l'un ni l'autre.

0voto

YvesLeBorg Points 5816

Quelle que soit la sémantique de "position" dans Coco, votre ">" devrait être "<" pour x et y, en supposant que votre interprétation de la propriété .position soit valable. Il est cependant probable que le 'sprite'.position soit en référence à un objet englobant, donc même si votre test est corrigé, il peut toujours ne pas vous donner ce que vous voulez savoir ('visible à l'écran').

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X