2013-05-09 3 views
1

회전하는 동안 변경되는 한 점에서 객체를 회전하려고합니다.AndEngine setRotationCenter가 회전 된 객체를 이동합니다.

setRotationCenter (float, float)를 호출하면 객체의 이미지가 임의의 지점으로 이동합니다. 이것은 회전 된 객체에서만 발생합니다. 즉, rotation = 0 인 객체에서 setRotationCenter를 호출하면 모든 것이 잘 작동합니다.

내 클래스는 Sprite를 확장합니다. setRotationCenter를 재정의하지 않습니다. AndEngine 버전이 오랫동안 업데이트되지 않았습니다.

나는 내가하고있는 일과 내가 가지고있는 것의 기록을 게시한다. 모두는 그들을보고 확인해야하지만, 실제로 (주의 즉 회전 중심의 증가이다) 이는 예상되는 동작

log item touch event previous rotation 30.0 
log item touch event previous rotation center 150.0: 150.0 
log item touch event previous position 100.0: 150.0 
log item touch event CALL TO setRotationCenter(151.0,151.0); 
log item touch event current rotation 30.0 
log item touch event current rotation center 151.0: 151.0 
log item touch event current position 100.0: 150.0 

log item touch event previous rotation 30.0 
log item touch event previous rotation center 151.0: 151.0 
log item touch event previous position 100.0: 150.0 
log item touch event CALL TO setRotationCenter(152.0,152.0); 
log item touch event current rotation 30.0 
log item touch event current rotation center 152.0: 152.0 
log item touch event current position 100.0: 150.0 

답변

7

벡터 v (1,1)을 따라 이동 화면에서 내 개체를 seing하고있다. setRotationCenter은 개체가 회전하는 지점을 변경합니다. 처음에는 물체가 150,150 정도에서 30도 회전하지만, 물체는 151,151 주위로 30도 회전합니다. 오브젝트의 회전 각은 계속 똑같아 보이지만 다른 점을 중심으로 회전하기 때문에 이동 한 것으로 보입니다.

당신이 제로 회전 객체로 시작하는 경우

, 다음 코드 조각의 모두가 같은 위치에 끝날 것 :

object.setRotationCenter(150, 150); 
object.setRotation(30); 
object.setRotationCenter(151, 151); 

과 : 만약 그

object.setRotationCenter(151, 151); 
object.setRotation(30); 

주 GLES2-AnchorCenter 버전의 AndEngine을 사용하는 경우 setRotationCenter에 대한 인수는 일반적으로 객체의 너비/높이의 비율이므로 0.0 ~ 1.0 범위에 있어야합니다. 나는. setRotationCenter(0.5f, 0.5f)은 객체가 중심을 중심으로 회전하게 만듭니다. 그러나 GLES2 버전을 사용하고 있다면, 아마도 옳은 것 같습니다.

+0

답변과 GLES2-AnchorCenter에 대한 의견을 보내 주셔서 감사합니다. RotationCenter를 사용하지 않고 이제는 0으로두고 모든 회전 수를 수동으로 계산합니다. 충돌을 계산하고 터치 이벤트를 화면 좌표로 쉽게 변환 할 수 있습니다. –

관련 문제