2013-07-26 43 views
0

试图检测哪些字符(目前延伸CCLayer对象),我很感动,当我遇到的cocos2d-x一个奇怪的问题。问题是,我点击的精灵的位置永远不会匹配已注册的触摸位置。如何获得触摸和图层对象的绝对位置?

我已经尝试了不同的转换功能,但他们都不似乎工作。

我如何能在ccTouchesBegan检测任何想法,地图(CCLayer)正在以比字符(也CCLayer的)相同的“规模”感动?当我收到它时我怎样才能获得触摸图的绝对位置(我将把角色移动到点击的位置)?

我知道,他们可能会很基本的问题,但是我一直在寻找答案了一段时间,我无法找到解决方案。任何对cocos2d-x或cocos2d的建议都非常受欢迎。

在此先感谢!

回答

0

1)为了检测世界点是否是在节点,我使用下面的函数:

 
    bool VUtils::isNodeAtPoint(cocos2d::CCNode* node, cocos2d::CCPoint& touchLocation) {     
     CCPoint nodePoint = node->convertToNodeSpace(touchLocation); 
     CCRect rect = CCRectMake(0, 0, node->getContentSize().width, node->getContentSize().height); 
     return rect.containsPoint(nodePoint); 
    } 

2)touchLocation - 是世界点坐标,为了得到它使用CCTouch ::的getLocation ()方法在你的触摸监听器中。

+0

2)CCTouch ::的getLocation()给我点击相对的到视图屏幕的左下角不是整个地图(世界)的位置。 问题是,我没有在相同的坐标方案(世界,屏幕,无论...)中同时获得触摸和节点位置。 – jgg

+0

“查看屏幕”,你是什么意思? CCTouch ::的getLocation() - 返回世界坐标,isNodeAtPoint - 将这个坐标协调目标节点的系统中。 – vedi