I want to shoot a bullet towards my mouse position but I think that my math is probably wrong since the position the bullets travel to isn't the right one. Here's my code

Vector2 bulletDirection = new Vector2(screenX - player.getX(), Gdx.graphics.getHeight() - (player.getY() - screenY)).nor();
bullet.setPosiion(player.getX(), player.getY());
bullet.translate(bulletDirection.x * flightSpeed, bulletDirection.y * flightSpeed);

Can you tell me what I'm doing wrong? The "bullet" object is my current bullet sprite

  • 1
    \$\begingroup\$ Where do your bullets go instead? The more details you can give us about the symptoms, the better we can narrow down the cause. I do notice the order of terms in the y component of your Vector2 looks unusual. \$\endgroup\$ – DMGregory Feb 28 at 20:50

You are probably using Gdx.graphics.getHeight() to change orientation of vertical axis from recieved click. If this is the case following code should work correctly:

Vector2 bulletDirection = new Vector2(screenX - player.getX(), (Gdx.graphics.getHeight() - screenY) - player.getY()).nor();

Also there is better way using unproject described here as it will later solve problems with zooming and moving camera:

Vector3 touchPos = new Vector3(screenX, screenY, 0);
Vector3 unprojectedPos = camera.unproject(touchPos);
Vector2 bulletDirection = new Vector2(unprojectedPos.x - player.getX(), unprojectedPos.y - player.getY()).nor();
  • \$\begingroup\$ Thank you so much! \$\endgroup\$ – xGolden Mar 1 at 15:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.