5
\$\begingroup\$

I'm working on adding bullets to my game. Right now I can shoot bullets in the direction that I would like from a ship by getting the ship's angle:

int speed = 5;
int dx = -(cos(degreesToRadians(ship.angle)) * speed); // rate of change in the x direction
int dy = -(sin(degreesToRadians(ship.angle)) * speed); // rate of change in the y direction

bulletPosition.addX(dx); // addX(dx) is simply bulletPosition.x += dx
bulletPosition.addY(dy);  

The ship is pretty much the exact same thing, except I use the += operator:

int dx += -(cos(degreesToRadians(angle)) * 0.15)
int dy += -(sin(degreesToRadians(angle)) * 0.15);

shipPosition.addX(dx);
shipPosition.addY(dy);

I would like to be able to add the ship's velocity to the bullet's velocity, but I'm a little confused as to how should get the speed from the ship's vector. I thought that adding the ship's dx to the bullet's dx like int dx = -(cos(degreesToRadians(ship.angle)) * speed * dx) would work because I'm adding the rate of change of the ship to the rate of change of the bullet, but that doesn't work. So here's the final question: How can I get the speed of my ship and apply it to my bullet's speed?

Thanks in advance for all help :)

\$\endgroup\$
1
  • 2
    \$\begingroup\$ It's a lot easier if you use vectors. \$\endgroup\$
    – edin-m
    Commented Mar 26, 2012 at 9:21

1 Answer 1

5
\$\begingroup\$

You do want to add the ship's dx/dy to the bullet's dx/dy, but you want addition, not multiplication.

bulletDx = -(cos(degreesToRadians(bulletHeading)) * speed) + shipDx;
\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .