Jump to content
  • Advertisement


This topic is now archived and is closed to further replies.



This topic is 6215 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi! Im working on a small worms clone and what i need is a formula that calculates the way of a bullet in air... need to draw its path through air... My different variables are: Power: 0 - 100 Angle: 0 - 180 Does any of you have any examples or references? Thanks. -Robert-

Share this post

Link to post
Share on other sites
Well, this is a pretty simple generalization of projectile motion, but here goes:

Basically, we''re talking 2-Dimensional motion. One motion in the y direction, and another in the x. Assuming there is no wind or air resistence, the x velocity shall remain constant throughout. However, because of gravity, the y velocity will constantly increase in the negative y direction.

Basically, you give your yv (y velocity) some initial positive value, and set g (gravitational acceleration) to whatever arbitrary value you want. To calculate the new yv, you would simply do this:

yv = yv + g;

To update the positions:

y = y + yv;
x = x + xv;

I hope this helped a little.

Free Speech, Free Sklyarov
Fight the unconstitutional DMCA.

Commander M

Share this post

Link to post
Share on other sites
Okay, let''s asume that your "power" unit creates a velocity of 1 unit per second.

If you are working in a 2-D plane, your 2 initial velocity components are going to be like this:

ViX = Power * cos(Angle)
ViY = Power * sin(Angle)

Then, you just use the simple projectile motion formulas from calc:

X = X + (ViX * time)
Y = Y + (ViY * time) + (.5 * Gravity) * (time * time)

Share this post

Link to post
Share on other sites

I can get it to fire a ''*'' through the air but the projectile just starts moving downwards as soon it leaves its start position. Well it should be moving upwards a while and then start to move down... or....

*What should i have as my gravity? Tried with .6.
*Should i use ordinary angles or radians, if radians how do i calculate it?
*What about time? Should i increase it with, say +.6 every frame or more?


Share this post

Link to post
Share on other sites
The c++ trig functions expect radians, not degrees. To convert angle theta into radians:

radians = theta * PI / 180;

I would make that into a macro since you''ll probably find it more intuitive to work with angles than radians. And precalculate PI / 180 for an easy optimization.

Remember that on a computer Y coordinates generally increase towards the bottom of the screen. That may be causing your projectile problem. And btw on earth g == -9.8

If you''re going to add a specific amount to the time every frame it should be a lot smaller than 0.6 seconds, or your projectiles are going to move like lightning. Some other ways to update the time are to actually calculate the time elapsed between frames and use that amount, or have your program time itself and only update the physics after a specific period of time, maybe every 0.1 seconds

Share this post

Link to post
Share on other sites

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!