Я делаю маленькую игру просто для удовольствия, и я застрял, выпуская пули из пистолета. В приведенном ниже коде направление игрока - угол градуса, называемый rot
.
Целый код: https://github.com/LegendL3n/Mortal-Kombat
Код:
float gunOffsetX = 106, gunOffsetY = 96;
double angle = Math.toRadians(rot); // convert direction of player from degrees to radians for sin and cos
x = getX(); // player X
y = getY(); // player Y
float bulletX = (float) (x + (gunOffsetX * Math.cos(angle) - gunOffsetY * Math.sin(angle)));
float bulletY = (float) (y + (gunOffsetX * Math.sin(angle) + gunOffsetY * Math.cos(angle)));
Instances.fire.add(new Fire(bulletX, bulletY, rot, weapon));
Также попытался:
bulletX = (float) (x + Math.cos(angle + Math.atan2(106, 96)) * Point2D.distance(0, 0, 106, 96));
Но те же результаты
Предположительно, пули должны появляться в конце пистолета, но это не так, как вы можете видеть в следующем gif..
Любая помощь оценена