Вопрос

У меня есть изображение моего игрока (сверху вниз 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);
}
.

Это было полезно?

Решение

Вам придется определить смещение для оружия (откройте изображение в краске или пробную версию и ошибку), а затем поверните это смещение, чтобы получить начальную позицию для пули.

Что-то вроде следующее должно работать: Примечание - я не проверил это, и у него могут быть опечатки

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://en.wikipedia.org/wiki/rotation_(mathematics)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top