diff options
author | heav-4 <heavpoot@gmail.com> | 2022-02-13 01:58:23 +0000 |
---|---|---|
committer | heav-4 <heavpoot@gmail.com> | 2022-02-13 01:58:23 +0000 |
commit | 46c55e261e66a89b32fecbfacb86fc24c033c7dc (patch) | |
tree | 00ec5d4c16fc01c1a72a017d47e57e69c2124f4d | |
parent | c6fcff61d7611f947679c1733c3f3912cde5ba97 (diff) |
Added gravity based on height
-rw-r--r-- | mods/vzxv_gravity/init.lua | 33 | ||||
-rw-r--r-- | mods/vzxv_gravity/mod.conf | 3 |
2 files changed, 36 insertions, 0 deletions
diff --git a/mods/vzxv_gravity/init.lua b/mods/vzxv_gravity/init.lua new file mode 100644 index 0000000..581a677 --- /dev/null +++ b/mods/vzxv_gravity/init.lua @@ -0,0 +1,33 @@ +local gravity_objects = {} + +local e = 2.718 + +local function gravity(ylevel) + return 2 / (1+(e ^ (ylevel/6000))) +end + +local gravmul = -9.81 + +local gravfunc = function(e) + local pos = e:get_pos() + local grav = gravity(pos.y+30000) * gravmul + e:set_acceleration({x=0,y=grav,z=0}) +end + +function vzxv.register_gravity(entity) + local entdef = minetest.registered_entities[entity] + local old_onstep = entdef.on_step or function() end + entdef.on_step = function(self,dtime,moveresult) + gravfunc(self) + return old_onstep(self,dtime,moveresult) + end +end + +minetest.register_globalstep(function() + local players = minetest.get_connected_players() + for _,player in ipairs(players) do + player:set_physics_override({ + gravity = gravity(player:get_pos().y) + }) + end +end)
\ No newline at end of file diff --git a/mods/vzxv_gravity/mod.conf b/mods/vzxv_gravity/mod.conf new file mode 100644 index 0000000..e51b4df --- /dev/null +++ b/mods/vzxv_gravity/mod.conf @@ -0,0 +1,3 @@ +name=vzxv_gravity +description = Vzxv +depends = vzxv
\ No newline at end of file |