2012-12-09 5 views
1

Ipad 게임을 만들려고합니다. 게임을 위해 나는 게임과 같은 스크롤하는 배경을 원한다 : 건초의 날 & Clash of Clans. 확장을 위해 Cocos2D를 사용했습니다. CCLayerPanZoom. 그러나 이것은 좋은 스크롤 효과를주지 못합니다 (손가락으로 움직이지 않으면 멈추지 않지만 그 속도를 줄이고 천천히 멈 춥니 다). 그리고이 확장 클래스의 줌 기능이 100 % 좋지 않다고 생각합니다.Cocos2D Ipad 게임 스크롤

어떤 해결책이 있나요?

Thnx.

답변

0

오, 소년. 최근 프로토 타입에서이 문제를 해결 한 것 : 앞으로의 일은 유감입니다. 이 작업을 수행하는 데는 두 가지 방법이 있으며 둘 다 깨끗하거나 단순하지 않습니다.

더 직관적 인 접근 방식은 카메라 위치를 이동하는 것입니다. 장면의 CCCamera를 조작하여이 작업을 수행 할 수 있습니다. 이런 의미에서, 평면 위에 비행기를 비행하는 것처럼 세계를 스크롤 할 수 있습니다. 모든 객체가 '실제 위치'를 유지하기 때문에 객체 간의 충돌 감지는 간단합니다. 스프라이트가 게임 세계에서 (100,100)에 있고 카메라 500을 왼쪽으로 스크롤하면 스프라이트는 여전히 (100,100)에 남아 있습니다.

불행하게도, 이것은 터치 입력과 관련된 많은 문제를 야기합니다. 터치 좌표가 화면의 해상도로 제한되기 때문에 '이 터치가이 노드에 있는지'를 더 이상 쉽게 확인할 수 없습니다. 카메라가 (1000,1000)에 있고 화면 가운데에서 스프라이트를 터치하면 해당 터치 위치는 (320,280) (화면 중간)에 등록됩니다. 모든 터치 계산에는 이제 카메라의 오프셋이 포함되어야하며, 기억하기가 까다로 우며 반복해서 포함하는 것이 좋습니다.

두 번째 방법은 세계를 CCLayer에 넣고 그 레이어를 카메라 아래로 이동하는 것입니다. 나는이 접근법이 더 많은 번거 로움을 발견했다. 그래서 나는 그것을 오랫동안 추구하지 않았다.

0

CCLayer를 사용하여 이동하려는 모든 자식을이 레이어에 추가하십시오. 모든 것을 이동하려면 CCLayer를 업데이트하십시오. (CGRect) worldBoundingBox {

CGRect rect = CGRectMake(0, 0, contentSize_.width,contentSize_.height); 
return CGRectApplyAffineTransform(rect, [self nodeToWorldTransform]); 

}

-

: 실제는 아래 함수를 사용하여 좌표 변환 층

좌표