blob: 581a6774c735a7da44f7d82cf335e309ad50e786 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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)
|