Gravity on round object ';..;'

Blitz3D Forums/Blitz3D Beginners Area/Gravity on round object ';..;'

This simpler method will work if you don't want variable framerates, and you can live without gravity making an object fall faster and faster.


; Distance to move object each frame towards planet.
Gravity# = 10.0

Ox# = EntityX#(Ship)
Oy# = EntityY#(Ship)
Oz# = EntityZ#(Ship)

Px# = EntityX#(Planet)
Py# = EntityY#(Planet)
Pz# = EntityZ#(Planet)

; Calculate vector from object to planet.
Gvx# = Px# - Ox#
Gvy# = Py# - Oy#
Gvz# = Pz# - Oz#

; Shorten vector until it's one unit long.
Gm# = Sqr(Gvx#*Gvx# + Gvy#*Gvy# + Gvz#*Gvz#)
Gdx# = Gvx# / Gm#
Gdy# = Gvy# / Gm#
Gdz# = Gvz# / Gm#

; Move object towards planet.
Ox# = Ox# + Gdx#*Gravity#
Oy# = Oy# + Gdy#*Gravity#
Oz# = Oz# + Gdz#*Gravity#

PositionEntity Ship, Ox#, Oy#, Oz#