2012-11-25 2 views
1

데모 프로그램은 화면을 한 번 슬라이드합니다. 시체 (내 경우에는 파란색 대포)가 그에 따라 회전합니다. 그래서 나는 대포 몸체와지면 몸체를위한 회전 관절을 정의했지만 앵커가 올바르게 설정되어 있지 않고 마우스 관절로 몸을 회전시킬 수 없다는 것을 알 수 있습니다. "국제 관행", 나는 관련 코딩/스크린을 다음에 업로드 할 것이다. 당신이 나를 도울 수 있는지보십시오.b2RevoluteJointDef를 사용할 때 회전 앵커를 설정하는 방법

사진 1 : 관련 몸을 정의, 공동 혁명

그림 2 : 터치 콜백 기능 : 공동 마우스를 만들기

사진 3 : 시뮬레이터 화면 (시뮬레이터에서, 회전 기준점이 정확하지 않은 것 같다)

"평판"이 부족하여 이미지를 업로드하거나 img 링크를 게시 할 수 없으며 직접 img 링크를 추가했습니다. 리볼 관절을 만들 때

+0

그림 1 : HTTP : //i.imgur.com/OYrqY.png 그림 2 : HTTP : // 전합니다. imgur.com/EzseG.png 그림 3 : http : //i.imgur.com/CfDHN.png – Chailie

+0

화면에서 스 와이프 할 때 마우스 관절이 그려지는 것을 보시겠습니까? 올바른 장소에 있습니까? – iforce2d

+0

화면을 닦을 때 캐논 몸체가 한동안 깜박입니다. – Chailie

답변

2

첫째, 당신은 다음과 같이 초기화를 사용해야합니다

cannonJointDef.Initialize(groundBody, cannonBody, cannonBody->GetPosition()); 

마지막 인수는 세계 좌표에 고정 점이다. 이 경우 대포의 중심이됩니다.

그리고, 단지 바로 회전을 설정하여, mouseJoint없이 대포를 회전하려고 :

CGPoint touchVec = ccpSub(touchPos, _cannon.position); 
float angle = ccpToAngle(touchVec) - M_PI_2; 
cannonBody->SetTransform(cannonBody->GetPosition(), angle); 
+0

초기화 메소드를 사용하지 않았기 때문에 생각하지 않습니다. 처음에는 "cannonJointDef.Initialize (groundBody, cannonBody, cannonBody-> GetPosition());"로 회전 조인트를 초기화합니다. " 그러나 그것은 역시 효과가 없었습니다. OK, 나는 "SetTransform()"을 시도 할 것이다. 그러나 마우스 조인트를 사용할 수없는 이유는 무엇입니까? – Chailie

+0

어제 또 다른 MAC에서 이걸 실행했는데 제대로 작동 할 수 있습니다. 원래 PC의 문제인지는 모르겠습니다. 어쨌든, 지금 해결되었습니다. 여러분, 감사합니다. – Chailie

관련 문제