cocos2d游戏 判断触摸点是否触摸到精灵上

来源:互联网 发布:农产品网络营销策划 编辑:程序博客网 时间:2024/05/16 04:44

今天又做了一个小功能,就是触屏的时候,当手指碰到精灵时,精灵能执行我们想要的效果。

下面看代码片段吧

- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{    for (UITouch *touch in touches)    {        //得到触摸屏上的点        CGPoint location = [touch locationInView:[touch view]];                //定义一个点,并把location赋值给point,为了在下面的代码执行中,不改变locaion的值        CGPoint point;        location = [[CCDirector sharedDirector] convertToGL:location];        point = location;                //遍历精灵数组中的精灵        for(CCSprite *ballon in ballonarray)        {                        //得到精灵的坐标范围,使手指碰到精灵的任意位置都能响应我们想要的效果             CGRect rect = [ballon textureRect];             rect = CGRectMake(0, 0, ballon.contentSize.width, ballon.contentSize.height);                        //用convertTouchToNodeSpaceAR:来转换坐标,转换坐标还有convertTouchToNodeSpace: convertToNodeSpace:            //这两个函数,在网上有几个函数的解释,我这里就不再罗嗦了             point = [ballon convertTouchToNodeSpaceAR:touch];                        //用CGRectContainsPoint来比较触摸点是否在精灵范围内              if(CGRectContainsPoint(rect, point))              {                  //在这里面你可以添加任何你想要执行的功能,我这里是改变精灵的颜色                    ballon.color = ccc3(255, 0, 255);  //如果以后想让精灵复原用 ballon.color = ccWHITE;就可以了                   [cutBallonArray addObject:ballon];                      }        }    }}