2013-06-25 2 views
2

두 개의 이미지가 있습니다. 대리석과 장애물입니다. 대리석이 장애물 위로 굴러 가지 않도록하고 싶습니다. 대리석이 장애물의 가장자리에 닿으면 이전 좌표로 설정해야 대리석이 장애물 가장자리에서 멈추는 것처럼 보입니다. 그 코드는 무엇입니까? 내 코드 :미로 게임에서와 같은 벽

CGRect obstacleBounceFrame = [_obstacleBounce frame]; 
CGRect intersectionWithObstacleBounce = CGRectIntersection(marbleFrame, obstacleBounceFrame); 
if(CGRectIsNull(intersectionWithObstacleBounce)) { 
    // Not touching yet - null intersection 
} else { 


} 

은 누군가가 나에게이 작업을 수행 할 수있는 이론을 줄 수 있을까요?

감사 Matis

enter image description here

+0

iOS 7 개발을 미리보고 싶다면 SpriteKit 프레임 워크를 사용하여 새로운 피직스 패키지를 활용할 수 있습니다. 그러나 iOS 7 이상에서만 작동합니다. – Corey

답변

2

이 같은 대리석의 이전 위치를 저장할 수 있습니다

CGRect previousPosition = marbleFrame.frame; 

그리고 대리석 벽에 충돌하는 경우 다음 반복에서, 그 프레임을 설정

그걸로.

다른 해결책은 어느 쪽이 충돌하고 있는지 (위, 왼쪽, 오른쪽 또는 아래로) 확인하는 것입니다. 교차 직사각형을 비교하는 것이 쉽습니다 (예를 들어 교차 직사각형 위쪽이 그의 오른쪽보다 큰 경우, 위 또는 아래에서 충돌하고 있습니다) 그리고 입력하기 바로 전에 marbleFrame을 배치하십시오.

또는 정말 쉽게 할 수있는 iOS7의 멋진 SpriteKit 일 수도 있지만 iOS7 장치의 경우에만 가능합니다.

+1

당신의 답을위한 Thx 이것이 나를 도왔습니다! 나는 SpriteKit이 훨씬 더 쉬울 것이라는 것을 알고 있지만 IOS 7이 내 프로그램을 업로드하기 위해 출시 될 때까지 기다려야 만한다. ;) – MatisDS

1

우선 충돌 탐지는 올바르게 작동하기 쉽지 않으므로 ObjectiveChipmunk 또는 Box2d와 같은 일부 외부 라이브러리를 조사해야 할 수 있습니다.

그 말은, 그 else 문에 넣을 수있는 몇 가지가 있습니다. 그가가는 경계에 따라 말하자면 "물건을 뒤로 움직이는"것이 일반적인 방법입니다. 만약 그가 왼쪽 경계와 충돌한다면, x 단위를 오른쪽으로 옮기고, 위쪽 경계를 치고, x 단위를 아래로 이동하십시오.

또 다른 가능한 해결책은 "유효한 "위치에 놓고 벽과 충돌하면 객체를 이전 위치로 되돌립니다.

+0

답변 해 주셔서 감사합니다. – MatisDS

+0

문제 : D – Monkeyanator

+0

매우 답답합니다. 답장을 올릴 수 있도록 15xp로 내 게시물의 속도를 높일 수 있습니까? = D – MatisDS