문제

나는 내 플레이어 (하향식 2D)의 이미지를 가지고 있습니다.플레이어가 회전하여 카메라를 향하게하고 총을 보관합니다.글 머리 기호가 생성되면 플레이어의 X와 Y에서 생성됩니다.이것은 플레이어가 올바른 방향으로 향하고있을 때 작동하지만 플레이어가 회전하고 촬영하면 총알이 올바른 방향으로 이동하지만 총에서옵니다.어떻게 해결할 수 있습니까?

public void fire() {
    angle = sprite.getRotation();
    System.out.println(angle);
    x = sprite.getX();
    y = sprite.getY();

    Bullet b = new Bullet(x, y, angle);
    Utils.world.addBullet(b);
}
.

도움이 되었습니까?

해결책

페인트의 오프셋을 결정해야합니다 (페인트 또는 평가판에서 이미지를 엽니 다), 해당 오프셋을 회전하여 글 머리 기호의 초기 위치를 얻습니다.

다음과 같은 것과 같이해야합니다. note - 나는 이것을 테스트하지 않았으며, 오타를 가질 수있다

public void fire() {
    angle = sprite.getRotation();
    System.out.println(angle);
    x = sprite.getX();
    y = sprite.getY();

    double bulletX = x + (gunOffsetX * Math.cos(angle) - gunOffsetY * Math.sin(angle);
    double bulletY = y + (gunOffsetX * Math.sin(angle) + gunOffsetY * Math.cos(angle);

    Bullet b = new Bullet(bulletX , bulletY , angle);
    Utils.world.addBullet(b);
}
.


출처 : http://n/en.wikipedia.org/wiki/rotation_ (정학)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top