2017-01-27 6 views
1

아래 코드를 사용하여 대상 (우주선)을 표적을 향해 회전시킵니다. libgdx/box2d에서 내 객체의 위쪽 벡터를 얻는 방법은 무엇입니까?

playerBody.setTransform(playerBody.getPosition(), MathUtils.lerpAngle(playerBody.getAngle(), getDesiredAngle(),lerpProgress));

나는 선박이 찾고있는 방향으로 배를 이동하고 싶습니다. 배의 상향 벡터를 검색하면 충분하다고 생각했습니다. 아래 코드를 시도했지만 작동하지 않습니다.

  Vector2 direction = playerBody.getWorldPoint(new Vector2(0,1)); 
     playerBody.setLinearVelocity(direction.nor()); 

답변

0

나는 getWorldPoint()가 사용자가 원하는 것을 제공하지 않는다고 생각합니다. box2D 세계의 기점에 관해서, 로컬 포인트의 벡터 (direction + distance)를 돌려줍니다. 이 그림에서 파란색 벡터는 getWorldPoint()입니다. 당신이 원하는 것은 빨간 벡터입니다.

이 같은 것이 일의 가장 기본적인 방법

: 내 경우에는 그 추가해야

float angle = playerBody.getAngle(); 
Vector2 direction = new Vector2(MathUtils.cos(angle),MathUtils.sin(angle)) 

, 나는 내가에 해당하는 0 °의 각도를 필요로하기 때문에, 90 °를 추가했다 세로 몸체 : angle = playerBody.getAngle() + MathUtils.PI/2f