原创文章,转载请注明出处!
在游戏中,有时会用到判断是否点击到一张图的有色部分,即非透明区域; 或者是判断不规则图片的碰撞的判断。
//判断有没有点到有材质的部分, p_point相对, CCSprite坐标
bool Tools::isClickTheRealSprite(cocos2d::CCSprite* p_sprite, const cocos2d::CCPoint p_point){
CCSize l_sizeInPixel = p_sprite->getContentSize();
//得到相对,Sprite左下的偏移
int l_iX = (int)(l_sizeInPixel.width/2.0f + p_point.x);
int l_iY = (int)(l_sizeInPixel.height/2.0f + (int)p_point.y);
CCPoint l_pointBL = ccp(l_iX, l_iY);
CCRect l_rect = CCRect(0, 0, l_sizeInPixel.width, l_sizeInPixel.height);
if(!(l_rect.containsPoint(l_pointBL))){
return false;
}
//开辟出空内存buffer
//unsigned char* l_buffer = (unsigned char*)malloc(l_sizeInPixel.width * l_sizeInPixel.height * 4);
//memset(l_buffer, 0, l_sizeInPixel.width * l_sizeInPixel.height * 4);
uint8_t l_buffer[4];
//写内存
CCSize si