1

IOS 7에서 볼에 관한 게임을 만들고 물리 바디로 스프라이트 키트를 사용하려고합니다. 접촉/충돌시 물체를 휴식시키는 것이 문제입니다.스프라이트 키트 - 올바른 충돌 접점에서 물리 물체를 쉬기

[contact.bodyA setVelocity:CGVectorMake(0, 0)]; 
[contact.bodyB setVelocity:CGVectorMake(0, 0)]; 
contact.bodyA.resting = YES; 
contact.bodyB.resting = YES; 

는 사실 contact.bodyA 이미 쉬고있다하지만 난 그냥 두 개체가 휴식으로 설정되어 있는지 확인하도록 설정 : 여기 didBeginContact 내 코드입니다. 문제는 내가 contact.bodyA(or B).resting = YES으로 설정해도 공들이 서로 닿지 않는다는 것입니다.

http://i.stack.imgur.com/p8JTk.png

이 가끔 일어나고있는 것입니다 :

내가 원하는 것입니다

http://i.stack.imgur.com/LWORO.png

당신이 두 번째 그림에서 볼 수 있듯이, 파란색 공은 멀리에서 비트가 다른 공. 접촉 지점에서 볼을 항상 자기 방식으로 만들 수 있습니까?

답변

0

이것은 물리 물리 체에 잠재적으로 문제가 될 수 있습니다. 나는 당신이 [SKPhysicsBody bodyWithCircleOfRadius:spriteWidth/2]을 사용하고 있다고 가정하고 있습니다. 스프라이트 이미지가 정확한 크기이고 물리 바디 생성자에게 먹이를주고있는 반지름과 일치하는지 확신 할 수 있습니까?

은 아마 당신은 속성 prevPosition에서 개체의 위치를 ​​저장하고, 충돌이 감지되면, prevPosition에 스프라이트 노드의 위치를 ​​반환하고 resting에 몸을 설정할 수 있습니다?

+0

예. 이것은 SKPhysicsBody를 만드는 방법입니다. 또한 볼을 직접 밀 때 공이 정확히 놓여 있기 때문에 이미지가 정확한 크기와 일치하는지 꽤 확신합니다. 그러나 벽을 통해 볼을 던지거나, 각도에 따라, 볼의 속도가 벽에 부딪히면서 증가/증가합니다. (어떻게 든 일정 속도를 설정하여이를 해결해야합니다.) 벽에서 튀어 나온 후 공은 첫 번째 위치보다 훨씬 더 빠르며이 속도에 따라 다르며 다른 공과 멀리 떨어져 있습니다. – Integer

+0

나는 가능한 해결책으로 편집했습니다 – Monkeyanator

+0

그 해결책이 효과가 있는지 말해주세요. 일반적인 방법이라고 생각합니다. – Monkeyanator