cocos2d content.size, boundingBox и размер - PullRequest
0 голосов
/ 28 мая 2011

я пишу игру, чтобы найти различия между 2 изображениями. я создал подкласс CCSprite, Spot. Сначала я попытался создать маленькие изображения и добавить себя в соответствии с их положением, но позже я обнаружил, что положение трудно определить, так как трудно избежать смещения в 1 или 2 пикселя.

Затем я попытался сделать пятно того же размера, что и изображение, с другой частью прозрачной. но мне все еще нужно выяснить «горячую точку» касания пальцем. но когда я использую CGRectContainsPoint ([self boundingBox], touchLocation), это фактически все изображение.

так есть ли другой способ сделать это? как content.size или self.size, и сделать CGRect из его непрозрачной части? Спасибо.

Ответы [ 2 ]

1 голос
/ 30 мая 2011

Я понял это сейчас. вот мой код: (на самом деле это довольно просто

-(void) findRect:(NSString*) fn {
//the origin of mTex is top left
//the origin of CGRect is top left, in the coordinate system inside the image
int topLeftX = 0;
int topLeftY = 0;
for (int i = 0; i < image_width; i += 10) {
    for (int j = 0; j < image_height; j += 10) {
        if (([mTex pixelAt:ccp(i, j)].a & 0xFF) != 0) {
            topLeftX = i;
            topLeftY = j;
            goto outer;
        }
    }
}
outer:;
int topRightX = 0;
for (int i = topLeftX; i < image_width; i += 10) {
    if (([mTex pixelAt:ccp(i, topLeftY)].a & 0xFF) == 0) {
        topRightX = i;
        break;
    }
}
if (topRightX == 0) {
    topRightX = image_width - 1;
}

int bottomLeftY = 0;
for (int i = topLeftY; i < image_height; i += 10) {
    if (([mTex pixelAt:ccp(topLeftX, i)].a & 0xFF) == 0) {
        bottomLeftY = i;
        break;
    }
}
if (bottomLeftY == 0) {
    bottomLeftY = image_height - 1;
}
areaRect = CGRectMake(topLeftX, topLeftY, topRightX - topLeftX, bottomLeftY - topLeftY);
}
0 голосов
/ 28 мая 2011

Вы должны посмотреть на данные текстуры. По сути, вы ищете идеальный по пикселям алгоритм обнаружения столкновений. Смотрите этот пост для получения дополнительной информации:

http://www.cocos2d -iphone.org / форум / тема / 1188

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...