在cocos2d中设置精灵的边界框

时间:2013-01-31 01:28:48

标签: objective-c cocos2d-iphone

我的场景中有三个精灵。我必须做一个触摸事件,其中玩家可以拖动其中一个精灵。我的问题是这些精灵非常薄,每当我试图将它们中的一个拉开时,边界框看起来非常大,所以即使我触摸空白区域并拖动,精灵也会移动。这是我试图这样做的方式。

    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
    }
}

如何将边界框设置为精灵的大小?

1 个答案:

答案 0 :(得分:1)

你可以这样做:

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

    CGRect boundingBox = sprite.boundingBox;

但是,如果您的图像文件在精灵周围包含透明空间,那么它也将成为边界框的一部分。