2013-04-07 4 views
0

En ce moment, j'ai un jeu de puzzle, avec des objets qui sont mobiles en utilisant la méthode ccTouchesBegan & & ccTouchesMovedaméliorer la réponse de ccTouchesBegan

Appelé à ccTouchesBegan:

if (CGRectContainsPoint(newBoundingBox, touchLocation)) 
    { 
     //Set the selectedSprite to the sprite with newBoundingBox 
    } 

Puis, en ccTouchesMoved je fais :

CGPoint translation = ccpSub(touchLocation, oldTouchLocation); 
newPos = ccpAdd(selSprite.position, translation); 
selectedSprite.position = newPos; 

Maintenant tout cela fonctionne bien et dandy, cependant, certains des objets que je déplace sont environ 140x40px (sur l'iPhone 320x480), et parfois la méthode ccTouchesBegan ne reconnaîtra pas le boundingBox contenant le touchLocation.

Ma question est, Puis-je augmenter la taille de la boundingBox de l'objet de sorte que si l'utilisateur "manque" avec là toucher un peu, cela va les aider? C'est un peu frustrant de devoir être si précis sur un écran tactile pour déplacer un obstacle.

EDIT: pour iPhonic:

Comment je reçois touchLocation, cela est en ccTouchesBegan:

NSSet *touchSet = [event allTouches]; 
int numberOfTouches = [touchSet count]; 
CGPoint touchLocation = [self convertTouchToNodeSpace:[touches anyObject]]; 

allTouches est passé automatiquement lorsque l'une touche commence.

+0

Oh, le plus petit sprite est 98x28px, 28px est trop étroite pour se déplacer avec un doigt toujours – SamBo

+0

Je suis curios bits pour savoir comment vous obtenez le touchLocation? Pouvez-vous mettre le code .. – iphonic

+0

édités pour vous. – SamBo

Répondre

0
-(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event 
{ 
    CGPoint location = [self convertTouchToNodeSpace: touch]; 

    for (CCSprite *tempSprite in sprites) 
    { 
       //Increase the size of bounding box.. 
     CGRect rect=tempSprite.boundingBox; 
       rect.size.height=rect.size.height + 20; 
       rect.size.width=rect.size.width + 20; 
     if (CGRectContainsPoint(rect, location)) 
     { 
        //Your stuffs 
     } 
    } 
} 
+0

Yup, newBoundingBox est défini manuellement sur les unités + x & y position autour du point central, pour contrer ce problème. – SamBo

+0

Puis-je simplement augmenter le x & y, en dehors de l'image, de sorte que si l'image manque un peu, elle l'attrape quand même? cela aura-t-il d'autres implications avec plusieurs sprites mobiles à l'écran avec des boundingBoxes "débordant"? – SamBo

+0

Edité ma réponse – iphonic