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 に答える