Just an algorithm where the floor level is zero.
from direct.showbase.ShowBase import ShowBase
from direct.task import Task
class MyApp(ShowBase):
def __init__(self):
ShowBase.__init__(self)
self.disableMouse()
self.camera.setPos(0, -10.0, 0)
self.box = self.loader.loadModel("box")
self.box.reparentTo(self.render)
self.jump_speed = 0
self.gravity_force = 9.8
self.jump_status = False
self.accept("space", self.set_jump)
self.taskMgr.add(self.gravity, "gravity")
def set_jump(self):
if self.jump_status == False:
self.jump_speed = 4
self.jump_status = True
def gravity(self, task):
self.box.setZ(self.box.getZ()+self.jump_speed*globalClock.getDt())
if self.box.getZ() > 0:
self.jump_speed = self.jump_speed - self.gravity_force*globalClock.getDt()
if self.box.getZ() < 0:
self.box.setZ(0)
self.jump_speed = 0
self.jump_status = False
return task.cont
app = MyApp()
app.run()