2016-07-20 2 views
1

마우스를 향해 회전하고 특정 속도로 마우스를 향해 움직이는 플레이어를 프로그래밍하려고합니다. 직교 카메라를 사용하고 있지만 카메라 위치가 플레이어 위치와 같아지면 플레이어 회전이 멈추고 모든 곳으로갑니다. 화면과 x 및 y가 아닌 마우스 좌표와 관련이있을 수 있다고 생각합니다. 나는 Gdx.inout.getY/X를 풀어 보려고 노력했다. 어떤 도움이라도 대단히 감사합니다. 내가 선수를 따라이 코드를 사용하고Libgdx Player rotation uping

:

cam.position.x = player.getX(); 
    cam.position.y = player.getY(); 
    cam.update(); 

And this code for rotation: 
float mouseX = Gdx.input.getX(); 
       float mouseY = (480 - Gdx.input.getY()); 

       float originX = getWidth()/2 + position.x; 
       float originY = getHeight()/2 + position.y; 

       double angle = Math.atan2(mouseY - originY, mouseX - originX) * (180/Math.PI) + 90; 

       if (angle < 0) 
         angle += 360; 

       rotation = (float) angle; 

       direction.x = mouseX - position.x; 
       direction.y = mouseY - position.y; 

       double hyp = Math.sqrt(direction.x * direction.x + direction.y * direction.y); 
       direction.x /= hyp; 
       direction.y /= hyp; 

       position.x += direction.x * 2; 
       position.y += direction.y * 2; 

답변

1

는 점을 투사 (또는 unprojecting) 시도?

ViewPort viewPort = new ... // which ever ViewPort you're using 

Vector2 worldPoint = new Vector2(x, y); 
Vector2 projected = viewPort.project(worldPoint); 

또는이 물건의 일부

Vector2 screenPoint = new Vector2(x, y); 
Vector2 unprojected = viewPort.unproject(screenPoint); 
+0

죄송 메신저 새로운, 그래서 나는 새로운 뷰포트를 작성하고 나의 카메라를 설정할? 내 세계가 뭘 가리키고 있을까? 플레이어의 위치는? –

+0

죄송합니다. 이미 ViewPort를 사용하고 계신 것으로 추정됩니다. StretchViewport에 대한 검색을 수행합니다 (다른 뷰포트를 사용할 수 있음, 현재 프로젝트에서이 뷰포트를 사용하고 있습니다). 그러면 대답을 찾을 수있을 것입니다 ... – munyul

+0

감사합니다. 화면 뷰포트를 사용하고 unpojecting 그런 식으로. –