cocos2d中设置精灵的边界框
Posted
技术标签:
【中文标题】cocos2d中设置精灵的边界框【英文标题】:Setting the bounding box of a sprite in cocos2d 【发布时间】:2013-01-31 01:28:47 【问题描述】:我的场景中有三个精灵。我必须制作一个触摸事件,其中玩家可以拖动其中一个精灵。我的问题是这些精灵非常薄,每当我尝试拖动其中一个时,边界框看起来非常大,所以即使我触摸空白空间并拖动,精灵也会移动。这就是我尝试的方法。
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】:你可以这样做:
CCSprite * sprite = [CCSprite spriteWithFile:@"sprite.png"];
CGRect boundingBox = sprite.boundingBox;
但是,如果您的图像文件包含精灵周围的透明空间,那也将成为边界框的一部分。
【讨论】:
谢谢!顺便说一句,如果我为精灵设置了一个锚点,如果文件周围有透明空间,它还会影响附近的其他精灵吗? 我不确定你所说的“影响附近的精灵”是什么意思,但我不认为改变锚点会改变精灵的边界框。 我的意思是,如果我设置锚点并触摸该点,它附近的其他精灵也会被触摸吗?以上是关于cocos2d中设置精灵的边界框的主要内容,如果未能解决你的问题,请参考以下文章