Identify which CCSprite is touched in Cocos2d
Posted
by
PeterK
on Game Development
See other posts from Game Development
or by PeterK
Published on 2012-04-01T08:34:41Z
Indexed on
2012/04/01
11:42 UTC
Read the original article
Hit count: 363
I am trying to learn Cocos2d and is experimenting with Ray Wenderlich tutorial whack-a-mole: www.raywenderlich.com/2560/how-to-create-a-mole-whacking-game-with-cocos2d-part-1
In this tutorial three CCSprite's are popping up and you should click on them...
However, i am trying to identify which mole, rat in my case, is popping up and place a CCSprite above that. Initially this looked like an easy task but i am failing. I am trying to NSLog LEFT HIT. i would guess the problem is in the If-statement and the last "227" height parameter.
The left rat boundingBox = {{99.5, 146.5}, {165, 227}} (from NSLog).
The key code is in the ccTouchBegan function:
-(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
CGPoint touchLocation = [self convertTouchToNodeSpace:touch];
for (CCSprite *rat in rats) {
if (rat.userData == FALSE) continue;
if (CGRectContainsPoint(rat.boundingBox, touchLocation)) {
//left: rat boundingBox = {{99.5, 146.5}, {165, 227}}
//mid: rat boundingBox = {{349.5, 146.5}, {165, 227}}
//right: rat boundingBox = {{599.5, 146.5}, {165, 227}}
//>>>>Here is where i try to get a hit<<<<
if (CGRectContainsPoint(CGRectMake(99.5, 146.55, 165, 227), touchLocation)) {
NSLog(@">>>>HIT LEFT<<<<<");
}
I would really appreciate a few ideas how to get this to work.
© Game Development or respective owner