DWboutin Posted December 16, 2013 Share Posted December 16, 2013 Hi!I want to create a planet like gravity like Angry Birds space, or look a like. But i don't know how to start with this. What i must know? Is there some articles out there who explain it?How can i make a plateformer on a round planet without my character get stuck in the side?Thank you for your help!Note: its the same post as http://www.html5gamedevs.com/topic/2599-create-round-planet-gravity-like-angry-birds-space/, i wanted to move it in this thread but i don't know why. Quote Link to comment Share on other sites More sharing options...
rich Posted December 16, 2013 Share Posted December 16, 2013 I'd suggest you start by looking at some tutorial on creating particle systems. Most particle systems include the attractors and deflectors needed to simulate planet-like gravity fast enough for use in a game. DWboutin 1 Quote Link to comment Share on other sites More sharing options...
Quetzacotl Posted December 16, 2013 Share Posted December 16, 2013 disclamer: I didn't yet try to make this kind of physics, but this is how I would try to achieve that.DWboutin, I think that you just have to compute vector from your object origin to planet origin and cast gravity force on it. Now it should be easy to get velocity of an object. Quote Link to comment Share on other sites More sharing options...
aladine Posted December 16, 2013 Share Posted December 16, 2013 i don't know if you are familiar with box2d or not, but maybe this tutorial could help, it does exactly what you need, the only problem that you may face is Box2D & ActionScript http://www.emanueleferonato.com/2012/03/28/simulate-radial-gravity-also-know-as-planet-gravity-with-box2d-as-seen-on-angry-birds-space/ Quote Link to comment Share on other sites More sharing options...
DWboutin Posted December 16, 2013 Author Share Posted December 16, 2013 I'd suggest you start by looking at some tutorial on creating particle systems. Most particle systems include the attractors and deflectors needed to simulate planet-like gravity fast enough for use in a game. I'll check it for sure ^^ disclamer: I didn't yet try to make this kind of physics, but this is how I would try to achieve that.DWboutin, I think that you just have to compute vector from your object origin to planet origin and cast gravity force on it. Now it should be easy to get velocity of an object. What you mean by compute vector (sorry, i'm french canadian, maybe i don't recognize the words) i don't know if you are familiar with box2d or not, but maybe this tutorial could help, it does exactly what you need, the only problem that you may face is Box2D & ActionScript http://www.emanueleferonato.com/2012/03/28/simulate-radial-gravity-also-know-as-planet-gravity-with-box2d-as-seen-on-angry-birds-space/ Thank you, i don't know Box2D, but the code is readable. I'll try it! Quote Link to comment Share on other sites More sharing options...
Salvatore Posted May 15, 2014 Share Posted May 15, 2014 Hey bro, try to put the velocity of the sprite to your point of gravity... Quote Link to comment Share on other sites More sharing options...
ultimatematchthree Posted May 16, 2014 Share Posted May 16, 2014 Just to add to this, the key concept you'll be working with is Newton's law of universal gravitation. Basically, this just says that the gravitational force between 2 objects is directly proportional to the product of the masses of the two objects, and inversely proportional to the square between them. If you do a search, you'll encounter a formula for this concept, but for your game, you probably won't be needing the actual constants used in real life - instead, you'll have to figure out the "gravitational constant" that feels right for your game. The actual formula is F=G*m1*m2/(r*r), but since you'll probably be needing just the acceleration, instead you'll just need to compute something like K*m/(r*r), where K is the constant you've figured out for your game, m is the mass of the i'th planet (you'll probably have more than 1 planet in your game), and r is the distance between the planet and the projectile whose trajectory you are trying to compute. Here's some (untested) code that should give you an idea of how to do it:var GRAVITATIONAL_CONSTANT = /* this depends on what feels right for your game */;for each (var projectile in projectiles) { for (var planet in planets) { var dx = planet.x - projectile.x; var dy = planet.y - projectile.y; var distanceSquared = dx * dx + dy * dy; var distance = Math.sqrt(distanceSquared); var acceleration = GRAVITATIONAL_CONSTANT * planet.mass / distanceSquared; projectile.velocityX += acceleration * (dx / distance); projectile.velocityY += acceleration * (dy / distance); } projectile.x += projectile.velocityX; projectile.y += projectile.velocityY;}You might still be able to optimize the above code by combining computations further, and of course you'll have to consider collisions, and maybe even use a different integrator such as RK4, but hopefully this should serve as a solid starting point. Of course, remember that it's your game, so you don't strictly have to follow the laws of physics, but it can serve as a good starting point, so feel free to bend the rules. Of course, there's also the option of using a physics engine such as Box2D - the principles illustrated here should still hold, you'll probably be applying forces just like how it's done above. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.