2012-02-19 5 views
1

저는 본질적으로 볼을 위에서 내려다 보는 게임을하고 있습니다. 볼을 클릭하면 기본적으로 주어진 방향으로 시작하려고합니다. 즉각적인 힘이 될 것입니다 (큐와 함께 풀 볼을 치는 것을 생각하십시오). 이 작업을 수행하려면 applyImpulse를 사용하려고합니다.Cocos2d + Chipmunk Physics - cpBodyApplyImpulse()

은 지금까지 내가 가지고 : 나는 그것을 알고있는 것처럼

cpBodyApplyImpulse(sprite.body, 
        cpBodyLocal2World(sprite.body, cpv(0.0, 1.0)), 
        cpBodyLocal2World(sprite.body, cpv(0.0, 0.0)) 
); 

는,이 기능에 소요되는 2 개 벡터는 "세계 좌표"그래서 내가 무엇을하고 있는가하는 것은 신체를 기준으로 한 좌표의 시각화 모든입니다 그들을 세계의 좌표로 변환합니다.

필자는 위의 코드에서 공이 무게 중심에 적용된 양수 방향의 벡터이기 때문에 회전이 전혀 일어나지 않을 것이라고 생각합니다. 그러나 볼은 오른쪽으로 올라가고 통제 할 수없이 회전합니다. 왜 이런 일이 일어나는 지, 그리고 내가 뭘하려고하는지 어떻게 달성 할 수 있습니까?

답변

1

cpBodyApplyImpulse은 세계가 아닌 신체 좌표계에서 imputs를 사용합니다.

그냥이 시도 :

cpBodyApplyImpulse(sprite.body, 
        cpv(0.0, 1.0), 
        cpv(0.0, 0.0)); 
+0

감사합니다. 그게 효과가있어, 내가 그걸 놓친 걸 믿을 수 없어. 한 가지 더 빠른 질문 - 어쩌면 나는 이것에 대해 너무 오랫동안 생각해 왔지만 벡터가 어떻게 단일 지점으로 정의 될 수 있습니까? 벡터의 기원은 어디입니까? –

+0

이 경우 두 벡터의 원점은 몸의 무게 중심입니다. 벡터 (0,0)는 아무 것도 오프셋하지 않는다는 것을 의미합니다. (전에 가지고 있던 스핀은 세계 좌표계에서이 벡터가 0,0이 아니기 때문에 당신이 당신의 물체의 한쪽면에 힘을 가하고 있었기 때문입니다.) – deanWombourne

+0

정말 고마워요. –