0

画面上でオブジェクトをドラッグできるアプリを作成していますが、オブジェクトは完全な正方形ではないため、透明なピクセルを避けようとしています。私はそれを行うために KKPixelMaskSprite クラスを使用していますが、適切に機能していません 誰かが私を正しい方向に向けることができますか? 次のようなそのクラスから継承するクラスがあります。

 @interface MyClass : KKPixelMaskSprite

そして、私はこれでタッチを読んでいます:

for (CCSprite *sprite in [_myLayer children]) {
        if ([sprite isKindOfClass:[MyClass class]]) {
            MyClass * object = (MyClass *)sprite;
            if (CGRectContainsPoint(object.boundingBox, touchLocation) && ![object pixelMaskContainsPoint:touchLocation]) {
                _selectedObject = object;
            }
        }
    }

そして、画面上で _selectedObject を動かし、

問題は、選択が完璧ではないことです (それに近いものではありません)。誰かがその解決策を持っていますか? 私がたどることができる他の道はありますか?

前もって感謝します

4

1 に答える 1

0

この場合、ピクセル パーフェクト コリジョンを使用する必要があります。タッチした点がスプライトのピクセルかどうかをテストします。

http://www.learn-cocos2d.com/2011/12/fast-pixelperfect-collision-detection-cocos2d-code-1of2/

于 2012-07-20T13:28:10.730 に答える