Lemmons Lemmons - 1 year ago 66
C++ Question

How do I make projectiles?

I am totally stumped on this one. I'm using C++ and SFML 1.6 for a game I'm developing, and I have no bloody idea. How do I make projectiles (like bullets)? I just don't understand it. It could be my lack of sleep but I don't know.

So my question is how do I create a Sprite that moves in a definite direction based on where the mouse is? (Think of a top down shooter with mouse aiming)

Answer Source

Easiest solution: If the mouse is at Mx,My and the ship is at Sx,Sy then calculate the direction from the ship to the mouse: Dx=Sx-Mx Dy=Sy-My

Now normalise D (this means scale it so that it's length is one):

DLen=sqrt(Dx*Dx + Dy*Dy)

Now Dx is the distance you want to move the bullet on the x axis in order to get bullet speed of 1.

Thus each frame you move the bullet like so (position of bullet: Bx,By Speed of bullet: Bs [in pixels per millisec] Frame time Ft[in millisec])


This give you a bullet that moves towards the mouse position at a speed independent of the direction of the mouse or framerate of the game.

EDIT: As @MSalters says you need to check for the DLen==0 case when the mouse is directly above the ship to avoid division by zero errors on the normalise

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download