2011-08-29 5 views
3

스프라이트가 화면에 있는지 또는 cocos2d에 있는지 확인하려고합니다.스프라이트가 화면에 있는지 여부를 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) 
} 

그러나 제대로 작동하지 않습니다. 착각하고 있었다. 코코에서 '위치'의 의미와 상관없이

답변

1

스프라이트의 기준점을 변경하지 않은 경우 스프라이트의 절반 만 화면에 표시되는 경우에만 테스트됩니다. 이 문제를 해결하려면

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

다른 모든 상호 작용에 대해이 과정을 수행 할 수 있습니다.

// 편집

phix23이 회전 또는 비율을 차지하지는 않지만 그 중 어느 쪽을하고있는 경우 작동합니다 언급 한 바와 같이.

+0

도 축척과 회전을 고려해야합니다. – Felix

+0

텍스처가 없습니다. "멤버가 없습니다."텍스처가 있습니다. – Srinivas

+0

@Srinivas [_SmallBlueAlien1 contentSize] .width/2 – ScottPetit

0

에 관계없이 .position 속성에 대한 해석이 유지된다고 가정하면 '>'는 x와 y에 대해 '<'이어야합니다. 그러나 '스프라이트'위치가 둘러싸는 물체를 기준으로하기 때문에 테스트가 수정 될 때에도 여전히 원하는 것을 알려주지 못하는 경우가 있습니다 ('화면에 표시').

관련 문제