如何获得触摸和图层对象的绝对位置?

时间:2013-07-26 23:54:47

标签: cocos2d-iphone cocos2d-x

我在尝试检测哪个字符(当前是CCLayer扩展对象)时遇到了cocos2d-x的奇怪问题。问题是我点击的精灵的位置永远不会与注册的触摸位置匹配。

我尝试了不同的转换功能,但它们似乎都不起作用。

有关如何在ccTouchesBegan中检测到地图(CCLayer)以与字符(也是CCLayer's)相同的“比例”进行触摸的任何想法?当我收到它时,我怎样才能在触摸点的地图中获得绝对位置(我会将角色移动到点击的位置)?

我知道他们可能是非常基本的问题,但我一直在寻找答案几个小时,我找不到解决方案。对cocos2d-x或cocos2d的任何建议都非常受欢迎。

提前致谢!

1 个答案:

答案 0 :(得分: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()方法。