0

シーンに3つのスプライトがあります。プレイヤーがスプライトの1つをドラッグできるタッチイベントを作成する必要があります。私の問題は、これらのスプライトが非常に薄いことです。そのうちの1つをドレープしようとすると、バウンディングボックスが非常に大きく見えるため、空きスペースに触れてドラッグしても、スプライトが移動します。これが私がそれをやろうとしていた方法です。

    NSSet *allTouch = [event allTouches];
    UITouch *touch = [[allTouch allObjects]objectAtIndex:0];
    CGPoint loc = [touch locationInView:[touch view]];
    loc = [[CCDirector sharedDirector]convertToGL:location];

    //Swipe Detection - Beginning point
    beginTouch = location;

    for(int i = 0; i < [objArray count]; i++)
    {
        CCSprite *sprite = (CCSprite *)[objArray objectAtIndex:i];

        CGRect spriteRect = CGRectMake(sprite.position.x - (sprite.contentSize.width/2), sprite.position.y - (sprite.contentSize.height/2), sprite.contentSize.width, sprite.contentSize.height);

    if(CGRectContainsPoint(spriteRect, location))
    {
        //actions here
    }
}

バウンディングボックスをスプライトのサイズに正確に設定するにはどうすればよいですか?

4

1 に答える 1

1

あなたはこのようにそれを行うことができます:

    CCSprite * sprite = [CCSprite spriteWithFile:@"sprite.png"];

    CGRect boundingBox = sprite.boundingBox;

ただし、画像ファイルにスプライトの周囲に透明なスペースが含まれている場合、それもバウンディングボックスの一部になります。

于 2013-01-31T03:35:19.730 に答える