나는 objective-c로 cocos2d를 사용하여 간단한 게임을 쓰고 있습니다. 이 게임에서는 적의 스프라이트에 임의의 위치를 부여합니다. 서로 다른 겹치는 것을 피하기 위해 새로운 스프라이트의 CGRect가 임의의 위치에있는 스프라이트가 다른 스프라이트의 CGRect와 겹치지 않는지 확인합니다.초기화되기 전에 CCSprite의 크기를 얻는 방법은 무엇입니까?
제 질문은 새 스프라이트를 초기화하기 전에 어떻게 CGRect의 크기를 얻을 수 있습니까? 그리고 ccbi 파일 (cocosbuilder)을 사용하여 스프라이트를 초기화하는 경우 어떻게합니까?
이전에했던 것은 새로운 스프라이트를 초기화하기 전에 임시 스프라이트를 적의 첫 번째 프레임 (모든 프레임의 크기가 동일 함)을 보여주는 png 파일로 초기화하는 것입니다. 그런 다음 크기를 tempSprite.boundingBox와 같이 사용하십시오. 그것이 잘 작동하지만, 나는 새로운 모든 적의 스프라이트를 초기화하기 전에 tempSprite를 만드는 것이 효율적이지 않다고 생각합니다.
이제 cocbi 파일을 사용하면 애니메이션 조정이 더 쉬워 져서 cocosbuilder를 사용하여 게임을 변환하려고합니다. 초기화하기 전에 스프라이트의 크기를 어떻게 알 수 있습니까? 난 여전히 [CCBReader nodeGraphFromFile : @ "enemySprite.ccbi"]를 사용하여 tempSprite를 만들고 tempSprite.boundingBox를 사용하여 크기를 얻을 수 있다고 생각합니다. 그러나 그것을하는 것이 올바른 방법일까요? 그것은 CPU 및 메모리 자원에 대해 매우 낭비합니다. 업데이트 : 나는 작동하지 않는 길을 시도했다. boundingBox 크기 값이 (0,0)이므로 (위치 값이 올바름)
스프라이트가 이미 일괄 처리되고 캐시되어 있습니까? 그렇다면 크기를 얻기 위해 초기화 할 추가 자원이 필요하지 않습니다. –
예, 예를 들어 첫 번째 프레임 인 png 파일에서 올바른 크기를 얻을 수 있습니다. 그러나 나는 또 다른 문제가 있었다. ccbi 파일의 크기가 0이기 때문에 나는 그것을 만질 수 없습니다 (텍스처를 만지는 것은 '만지기'로 간주되지 않습니다). – ArtS