私はCocos2dとObjective-Cを学んでいます。タッチ検出にはいくつかの問題があります。タッチ検出に関する問題
HelloWorldLayer
にいくつかのスプライトがあり、いくつかのdraggableSprites(NSMutableArray)があります。 draggableSpritesの2つが別のものの上にあります(下の方が大きくなります)。
- (void)selectSpriteForTouch:(CGPoint)touchLocation {
CCSprite *touchSprite = nil;
for (CCSprite *sprite in dragableSprites) {
if (CGRectContainsPoint(sprite.boundingBox, touchLocation)) {
touchSprite = sprite;
break;
}
}
if (touchSprite != selSprite) {
[selSprite stopAllActions];
[selSprite runAction:[CCRotateTo actionWithDuration:0.1 angle:0]];
CCRotateTo * rotLeft = [CCRotateBy actionWithDuration:0.1 angle:-1.0];
CCRotateTo * rotCenter = [CCRotateBy actionWithDuration:0.1 angle:0.0];
CCRotateTo * rotRight = [CCRotateBy actionWithDuration:0.1 angle:1.0];
CCSequence * rotSeq = [CCSequence actions:rotLeft, rotCenter, rotRight, rotCenter, nil];
[touchSprite runAction:[CCRepeatForever actionWithAction:rotSeq]];
selSprite = touchSprite;
}
}
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
CGPoint touchLocation = [self convertTouchToNodeSpace:touch];
[self selectSpriteForTouch:touchLocation];
return TRUE;
}
しかし、私は上部または下部スプライトをタッチすると、底面のみ1は、(それがINITに最初に追加されました)揺れている:
それから私は触れたスプライトを揺るがすいくつかのコードを持っています。
私はコードCGRectContainsPoint(sprite.boundingBox, touchLocation)
を交換する必要があると思いますが、私はちょうどその方法がわかりません。
私は、フォーラムにいくつかの夜を過ごしたが、私はまだトップスプライトシェイクを作る方法を理解することはできません...
ありがとう! Breakステートメントを削除すると、スプライトのトップに役立ちます。 – OnOff
うれしい私は助けることができました! –