Skip to main content
Commonmark migration
Source Link

As you are creating a "fictional force" physics should be our starting point but the exact form can be up to you. My suggestion would be to use a modified drag rather than trying to modify gravity.

Why you shouldn't use a modified gravity##gravity

This is because gravity applies a simple acceleration. This means if an object is rushing towards the ground at 100mph and gets close to the ground so gravity drops to zero it just doesn't get any faster, it doesn't land "light as a feather" as you hope. To slow it down you would have to apply a negative gravity. However; this still wouldn't work nicely because objects that were falling slowly would "bounce" without ever hitting the ground.

Why you should use a modified drag##drag

What you want to do is apply a force proportional to the velocity of the object. And make that force stronger nearer the ground.

So! What exact form should this force have? My suggestion would be as follows

if (height<heightAtWhichDragStarts){
     dragForce=dragCoEfficientAtGroundLevel*(heightAtWhichDragStarts-height)*objectMass*velocity
}else{
    dragForce=0 
}

Usually drag force would not have mass in it, but I'm assuming you want heavy objects to have just as much "land light as a feather" as light objects so you'll need to apply more force to them. The more lightly you want objects to land the greater dragCoEfficientAtGroundLevel should be. You may want to also only apply this force to objects heading downwards so jumping objects aren't slowed down.

How to apply this force

##How to apply this force## IfIf you're using a physics engine apply it as that engine wants it (but be careful to make sure you don't mix up forces and impulses) but if you're "rolling your own" then apply it as follows.

Within your physics step you always want to include the time of that physics step, you'll need that because of how force effects velocity by the formala F=ma and a=changeInVelocity/changeInTime

So:

F=ma
dragForce=mass*changeInVelocity/changeInTime
changeInVelocity=dragForce*changeInTime/mass

Although including the changeInTime in the formula is important to get the physics right its also important for your simulation. If you don't include changeInTime you can get really nasty effects such as if your game slows down (for example because annother program is running) from 60 frames per second to 30 frames per second your physics can actually change which is obviously very bad

As you are creating a "fictional force" physics should be our starting point but the exact form can be up to you. My suggestion would be to use a modified drag rather than trying to modify gravity.

Why you shouldn't use a modified gravity##

This is because gravity applies a simple acceleration. This means if an object is rushing towards the ground at 100mph and gets close to the ground so gravity drops to zero it just doesn't get any faster, it doesn't land "light as a feather" as you hope. To slow it down you would have to apply a negative gravity. However; this still wouldn't work nicely because objects that were falling slowly would "bounce" without ever hitting the ground.

Why you should use a modified drag##

What you want to do is apply a force proportional to the velocity of the object. And make that force stronger nearer the ground.

So! What exact form should this force have? My suggestion would be as follows

if (height<heightAtWhichDragStarts){
     dragForce=dragCoEfficientAtGroundLevel*(heightAtWhichDragStarts-height)*objectMass*velocity
}else{
    dragForce=0 
}

Usually drag force would not have mass in it, but I'm assuming you want heavy objects to have just as much "land light as a feather" as light objects so you'll need to apply more force to them. The more lightly you want objects to land the greater dragCoEfficientAtGroundLevel should be. You may want to also only apply this force to objects heading downwards so jumping objects aren't slowed down.

##How to apply this force## If you're using a physics engine apply it as that engine wants it (but be careful to make sure you don't mix up forces and impulses) but if you're "rolling your own" then apply it as follows.

Within your physics step you always want to include the time of that physics step, you'll need that because of how force effects velocity by the formala F=ma and a=changeInVelocity/changeInTime

So:

F=ma
dragForce=mass*changeInVelocity/changeInTime
changeInVelocity=dragForce*changeInTime/mass

Although including the changeInTime in the formula is important to get the physics right its also important for your simulation. If you don't include changeInTime you can get really nasty effects such as if your game slows down (for example because annother program is running) from 60 frames per second to 30 frames per second your physics can actually change which is obviously very bad

As you are creating a "fictional force" physics should be our starting point but the exact form can be up to you. My suggestion would be to use a modified drag rather than trying to modify gravity.

Why you shouldn't use a modified gravity

This is because gravity applies a simple acceleration. This means if an object is rushing towards the ground at 100mph and gets close to the ground so gravity drops to zero it just doesn't get any faster, it doesn't land "light as a feather" as you hope. To slow it down you would have to apply a negative gravity. However; this still wouldn't work nicely because objects that were falling slowly would "bounce" without ever hitting the ground.

Why you should use a modified drag

What you want to do is apply a force proportional to the velocity of the object. And make that force stronger nearer the ground.

So! What exact form should this force have? My suggestion would be as follows

if (height<heightAtWhichDragStarts){
     dragForce=dragCoEfficientAtGroundLevel*(heightAtWhichDragStarts-height)*objectMass*velocity
}else{
    dragForce=0 
}

Usually drag force would not have mass in it, but I'm assuming you want heavy objects to have just as much "land light as a feather" as light objects so you'll need to apply more force to them. The more lightly you want objects to land the greater dragCoEfficientAtGroundLevel should be. You may want to also only apply this force to objects heading downwards so jumping objects aren't slowed down.

How to apply this force

If you're using a physics engine apply it as that engine wants it (but be careful to make sure you don't mix up forces and impulses) but if you're "rolling your own" then apply it as follows.

Within your physics step you always want to include the time of that physics step, you'll need that because of how force effects velocity by the formala F=ma and a=changeInVelocity/changeInTime

So:

F=ma
dragForce=mass*changeInVelocity/changeInTime
changeInVelocity=dragForce*changeInTime/mass

Although including the changeInTime in the formula is important to get the physics right its also important for your simulation. If you don't include changeInTime you can get really nasty effects such as if your game slows down (for example because annother program is running) from 60 frames per second to 30 frames per second your physics can actually change which is obviously very bad

added 14 characters in body
Source Link

As you are creating a "fictional force" physics should be our starting point but the exact form can be up to you. My suggestion would be to use a modified drag rather than trying to modify gravity.

Why you shouldn't use a modified gravity##

This is because gravity applies a simple acceleration. This means if an object is rushing towards the ground at 100mph and gets close to the ground so gravity drops to zero it just doesn't get any faster, it doesn't land "light as a feather" as you hope. To slow it down you would have to apply a negative gravity. However; this still wouldn't work nicely because objects that were falling slowly would "bounce" without ever hitting the ground.

Why you should use a modified drag##

What you want to do is apply a force proportional to the velocity of the object. And make that force stronger nearer the ground.

So! What exact form should this force have? My suggestion would be as follows

if (height<heightAtWhichDragStarts){
     dragForce=dragCoEfficientAtGroundLevel*(heightAtWhichDragStarts-height)*objectMass*velocity
}else{
    dragForce=0 
}

Usually drag force would not have mass in it, but I'm assuming you want heavy objects to have just as much "land light as a feather" as light objects so you'll need to apply more force to them. The more lightly you want objects to land the greater dragCoEfficientAtGroundLevel should be. You may want to also only apply this force to objects heading downwards so jumping objects aren't slowed down.

##How to apply this force## If you're using a physics engine apply it as that engine wants it (but be careful to make sure you don't mix up forces and impulses) but if you're "rolling your own" then apply it as follows.

Within your physics step you always want to include the time of that physics step, you'll need that because of how force effects velocity by the formala F=ma and a=changeInVelocity/changeInTime

So:

F=ma
F=m*changeInVelocitydragForce=mass*changeInVelocity/changeInTime
changeInVelocity=dragForce*m*changeInTimechangeInVelocity=dragForce*changeInTime/mass

Although including the changeInTime in the formula is important to get the physics right its also important for your simulation. If you don't include changeInTime you can get really nasty effects such as if your game slows down (for example because annother program is running) from 60 frames per second to 30 frames per second your physics can actually change which is obviously very bad

As you are creating a "fictional force" physics should be our starting point but the exact form can be up to you. My suggestion would be to use a modified drag rather than trying to modify gravity.

Why you shouldn't use a modified gravity##

This is because gravity applies a simple acceleration. This means if an object is rushing towards the ground at 100mph and gets close to the ground so gravity drops to zero it just doesn't get any faster, it doesn't land "light as a feather" as you hope. To slow it down you would have to apply a negative gravity. However; this still wouldn't work nicely because objects that were falling slowly would "bounce" without ever hitting the ground.

Why you should use a modified drag##

What you want to do is apply a force proportional to the velocity of the object. And make that force stronger nearer the ground.

So! What exact form should this force have? My suggestion would be as follows

if (height<heightAtWhichDragStarts){
     dragForce=dragCoEfficientAtGroundLevel*(heightAtWhichDragStarts-height)*objectMass*velocity
}else{
    dragForce=0 
}

Usually drag force would not have mass in it, but I'm assuming you want heavy objects to have just as much "land light as a feather" as light objects so you'll need to apply more force to them. The more lightly you want objects to land the greater dragCoEfficientAtGroundLevel should be. You may want to also only apply this force to objects heading downwards so jumping objects aren't slowed down.

##How to apply this force## If you're using a physics engine apply it as that engine wants it (but be careful to make sure you don't mix up forces and impulses) but if you're "rolling your own" then apply it as follows.

Within your physics step you always want to include the time of that physics step, you'll need that because of how force effects velocity by the formala F=ma and a=changeInVelocity/changeInTime

So:

F=ma
F=m*changeInVelocity/changeInTime
changeInVelocity=dragForce*m*changeInTime

Although including the changeInTime in the formula is important to get the physics right its also important for your simulation. If you don't include changeInTime you can get really nasty effects such as if your game slows down (for example because annother program is running) from 60 frames per second to 30 frames per second your physics can actually change which is obviously very bad

As you are creating a "fictional force" physics should be our starting point but the exact form can be up to you. My suggestion would be to use a modified drag rather than trying to modify gravity.

Why you shouldn't use a modified gravity##

This is because gravity applies a simple acceleration. This means if an object is rushing towards the ground at 100mph and gets close to the ground so gravity drops to zero it just doesn't get any faster, it doesn't land "light as a feather" as you hope. To slow it down you would have to apply a negative gravity. However; this still wouldn't work nicely because objects that were falling slowly would "bounce" without ever hitting the ground.

Why you should use a modified drag##

What you want to do is apply a force proportional to the velocity of the object. And make that force stronger nearer the ground.

So! What exact form should this force have? My suggestion would be as follows

if (height<heightAtWhichDragStarts){
     dragForce=dragCoEfficientAtGroundLevel*(heightAtWhichDragStarts-height)*objectMass*velocity
}else{
    dragForce=0 
}

Usually drag force would not have mass in it, but I'm assuming you want heavy objects to have just as much "land light as a feather" as light objects so you'll need to apply more force to them. The more lightly you want objects to land the greater dragCoEfficientAtGroundLevel should be. You may want to also only apply this force to objects heading downwards so jumping objects aren't slowed down.

##How to apply this force## If you're using a physics engine apply it as that engine wants it (but be careful to make sure you don't mix up forces and impulses) but if you're "rolling your own" then apply it as follows.

Within your physics step you always want to include the time of that physics step, you'll need that because of how force effects velocity by the formala F=ma and a=changeInVelocity/changeInTime

So:

F=ma
dragForce=mass*changeInVelocity/changeInTime
changeInVelocity=dragForce*changeInTime/mass

Although including the changeInTime in the formula is important to get the physics right its also important for your simulation. If you don't include changeInTime you can get really nasty effects such as if your game slows down (for example because annother program is running) from 60 frames per second to 30 frames per second your physics can actually change which is obviously very bad

edited body
Source Link

As you are creating a "fictional force" physics should be our starting point but the exact form can be up to you. My suggestion would be to use a modified drag rather than trying to modify gravity.

Why you shouldn't use a modified gravity##

This is because gravity applies a simple acceleration. This means if an object is rushing towards the ground at 100mph and gets close to the ground so gravity drops to zero it just doesn't get any faster, it doesn't land "light as a feather" as you hope. To slow it down you would have to apply a negative gravity. However; this still wouldn't work nicely because objects that were falling slowly would "bounce" without ever hitting the ground.

Why you should use a modified drag##

What you want to do is apply a force proportional to the velocity of the object. And make that force stronger nearer the ground.

So! What exact form should this force have? My suggestion would be as follows

if (height<heightAtWhichDragStarts){
     dragForce=dragCoEfficientAtGroundLevel*(heightAtWhichDragStarts-height)*objectMass*velocity
}else{
    dragForce=0 
}

Usually drag force would not have mass in it, but I'm assuming you want heavy objects to have just as much "land light as a feather" as light objects so you'll need to apply more force to them. The more lightly you want objects to land the greater dragCoEfficientAtGroundLevel should be. You may whatwant to also only apply this force to objects heading downwards so jumping objects aren't slowed down.

##How to apply this force## If you're using a physics engine apply it as that engine wants it (but be careful to make sure you don't mix up forces and impulses) but if you're "rolling your own" then apply it as follows.

Within your physics step you always want to include the time of that physics step, you'll need that because of how force effects velocity by the formala F=ma and a=changeInVelocity/changeInTime

So:

F=ma
F=m*changeInVelocity/changeInTime
changeInVelocity=dragForce*m*changeInTime

Although including the changeInTime in the formula is important to get the physics right its also important for your simulation. If you don't include changeInTime you can get really nasty effects such as if your game slows down (for example because annother program is running) from 60 frames per second to 30 frames per second your physics can actually change which is obviously very bad

As you are creating a "fictional force" physics should be our starting point but the exact form can be up to you. My suggestion would be to use a modified drag rather than trying to modify gravity.

Why you shouldn't use a modified gravity##

This is because gravity applies a simple acceleration. This means if an object is rushing towards the ground at 100mph and gets close to the ground so gravity drops to zero it just doesn't get any faster, it doesn't land "light as a feather" as you hope. To slow it down you would have to apply a negative gravity. However; this still wouldn't work nicely because objects that were falling slowly would "bounce" without ever hitting the ground.

Why you should use a modified drag##

What you want to do is apply a force proportional to the velocity of the object. And make that force stronger nearer the ground.

So! What exact form should this force have? My suggestion would be as follows

if (height<heightAtWhichDragStarts){
     dragForce=dragCoEfficientAtGroundLevel*(heightAtWhichDragStarts-height)*objectMass*velocity
}else{
    dragForce=0 
}

Usually drag force would not have mass in it, but I'm assuming you want heavy objects to have just as much "land light as a feather" as light objects so you'll need to apply more force to them. The more lightly you want objects to land the greater dragCoEfficientAtGroundLevel should be. You may what to also only apply this force to objects heading downwards so jumping objects aren't slowed down.

##How to apply this force## If you're using a physics engine apply it as that engine wants it (but be careful to make sure you don't mix up forces and impulses) but if you're "rolling your own" then apply it as follows.

Within your physics step you always want to include the time of that physics step, you'll need that because of how force effects velocity by the formala F=ma and a=changeInVelocity/changeInTime

So:

F=ma
F=m*changeInVelocity/changeInTime
changeInVelocity=dragForce*m*changeInTime

Although including the changeInTime in the formula is important to get the physics right its also important for your simulation. If you don't include changeInTime you can get really nasty effects such as if your game slows down (for example because annother program is running) from 60 frames per second to 30 frames per second your physics can actually change which is obviously very bad

As you are creating a "fictional force" physics should be our starting point but the exact form can be up to you. My suggestion would be to use a modified drag rather than trying to modify gravity.

Why you shouldn't use a modified gravity##

This is because gravity applies a simple acceleration. This means if an object is rushing towards the ground at 100mph and gets close to the ground so gravity drops to zero it just doesn't get any faster, it doesn't land "light as a feather" as you hope. To slow it down you would have to apply a negative gravity. However; this still wouldn't work nicely because objects that were falling slowly would "bounce" without ever hitting the ground.

Why you should use a modified drag##

What you want to do is apply a force proportional to the velocity of the object. And make that force stronger nearer the ground.

So! What exact form should this force have? My suggestion would be as follows

if (height<heightAtWhichDragStarts){
     dragForce=dragCoEfficientAtGroundLevel*(heightAtWhichDragStarts-height)*objectMass*velocity
}else{
    dragForce=0 
}

Usually drag force would not have mass in it, but I'm assuming you want heavy objects to have just as much "land light as a feather" as light objects so you'll need to apply more force to them. The more lightly you want objects to land the greater dragCoEfficientAtGroundLevel should be. You may want to also only apply this force to objects heading downwards so jumping objects aren't slowed down.

##How to apply this force## If you're using a physics engine apply it as that engine wants it (but be careful to make sure you don't mix up forces and impulses) but if you're "rolling your own" then apply it as follows.

Within your physics step you always want to include the time of that physics step, you'll need that because of how force effects velocity by the formala F=ma and a=changeInVelocity/changeInTime

So:

F=ma
F=m*changeInVelocity/changeInTime
changeInVelocity=dragForce*m*changeInTime

Although including the changeInTime in the formula is important to get the physics right its also important for your simulation. If you don't include changeInTime you can get really nasty effects such as if your game slows down (for example because annother program is running) from 60 frames per second to 30 frames per second your physics can actually change which is obviously very bad

added 43 characters in body
Source Link
Loading
Source Link
Loading