определить, есть ли спрайт на экране или нет в cocos2d - PullRequest
3 голосов
/ 29 августа 2011

Я хочу определить, находится ли спрайт на экране или нет в cocos2d.

я использую в коде что-то вроде этого.

CGSize winSize = [CCDirector sharedDirector].winSize;

    if (_SmallBlueAlien1.position.x> 0 || _SmallBlueAlien1.position.x > winSize.width || _SmallBlueAlien1.position.y> 0 || _SmallBlueAlien1.position.y > winSize.height)
    {
//Sprite is not in the screen)
}

, но не работает должным образом. были ошибаюсь. поправь меня

Ответы [ 2 ]

1 голос
/ 29 августа 2011

Если вы не изменили точку привязки спрайта, это будет проверкой, только если половина спрайта находится на экране. Чтобы исправить это, вы хотите проверить, если

_SmallBlueAlien1.position.x> [_SmallBlueAlien1 contentSize] .texture.width / 2;

Вы можете следовать этому процессу для всех других взаимодействий.

// Edit

Как заметил phix23, это не учитывает вращение или масштабирование, но должно работать, если вы не делаете ни того, ни другого.

0 голосов
/ 29 августа 2011

независимо от семантики 'position' в coco, ваш '>' должен быть '<' для x и y, при условии, что ваша интерпретация свойства .position имеет место. Однако вполне вероятно, что «sprite» .position относится к включающему объекту, поэтому даже если ваш тест исправлен, он все равно может не дать вам того, что вы хотите знать («видимый на экране»).

...