我正在开发一款适用于Android的cocos2d-x游戏,但我遇到了一个问题。
_hammer = CCSprite::createWithSpriteFrameName("Hammer.png");
_hammer->setPosition(ccp(_screenSize.width * 0.5f - 4*((_hammer->getContentSize().width) * 0.15f), _screenSize.height * 0.055f ));
_hammer->setVisible(true);
_hammer->setScale((_screenSize.width / _hammer->getContentSize().width) * 0.15f);
_hammer->setScale((_screenSize.height / _hammer->getContentSize().height) * 0.15f);
_hammerSelected = true;
{
CCTouch *touch = (CCTouch *) pTouches->anyObject();
CCPoint location = touch->locationInView();
location = CCDirector::sharedDirector()->convertToGL(location);
if ((CCRect::CCRectContainsPoint(_hammer->boundingBox(), location))) {
//do something
}
我打开了CC_SPRITE_DEBUG_DRAW和CC_SPRITEBATCHNODE_DEBUG_DRAW,问题是boundingBox比它看起来要大。当我点击boundingBox附近的某个地方时,它就像我实际点击它一样注册。
请有人帮帮我吗? :)
答案 0 :(得分:3)
边界框的矩形与图像的内容大小相同。它包含图像的alpha区域。
您可以使用“TexturePacker”等工具修剪图像,然后在加载后使用getTextureRect
获取最小的矩形。
答案 1 :(得分:0)
试试这个:
CCRect rect= _hammer->boundingBox();
//multiply the scale value.
rect.size.height*= _hammer->getScaleX();
rect.size.width*= _hammer->getScaleY();
if ((CCRect::CCRectContainsPoint(rect, location))) {
//do something
}