0

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

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

关于如何在 ccTouchesBegan 中检测到地图(CCLayer)以与字符(也是 CCLayer 的)相同的“比例”被触摸的任何想法?我如何在收到触摸位置的地图中获得绝对位置(我会将角色移动到单击位置)?

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

提前致谢!

4

1 回答 1

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() 方法。

于 2013-07-27T05:05:41.933 回答