Как да подредя куршумите с пистолет?

Имам изображение на моя плейър (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);
}

person Shane    schedule 28.07.2012    source източник


Отговори (1)


Ще трябва да определите отместването за пистолета (отворете изображението в боя или проба и грешка) и след това да завъртите това отместване, за да получите първоначалната позиция за куршума.

Нещо като следното трябва да работи: Забележка – не съм тествал това и може да има правописни грешки

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_%28mathematics%29

person Nick Eaket    schedule 28.07.2012
comment
Това изглежда не работи. Това е почти същото като преди, само че сега куршумите идват от различни позиции. Обърнете внимание, че нямам изображение на пистолет, прикрепено към играч, а по-скоро изображение на играч, който държи пистолет. - person Shane; 28.07.2012
comment
Няма значение! Накарах го да работи. Всичко, което трябваше да направя, беше да конвертирам ъгъла в радиани, преди да използвам Math.cos(...) и Math.sin(...). - person Shane; 28.07.2012