Hi, I need to know how I can make a gravity system, and how to jump with it. Here is my current code:
from direct.showbase.ShowBase import ShowBase
from direct.gui.DirectButton import DirectButton
from direct.gui.OnscreenImage import OnscreenImage
from direct.gui.OnscreenText import OnscreenText
from panda3d.core import loadPrcFileData
loadPrcFileData('', 'window-title Test Program')
loadPrcFileData('', 'win-size 900 500')
class MyApp(ShowBase):
def __init__(self):
ShowBase.__init__(self)
self.dt = globalClock.getDt()
base.disableMouse()
base.setBackgroundColor(0, 0, 0)
self.cam.setPos(-10, 0, 2)
self.title()
self.car = loader.loadModel("car")
self.car.reparentTo(render)
self.car.setScale(1)
self.car.setPos(0, 10, 0)
self.keyMap = {"w": False,
"s": False,
"a": False,
"d": False}
self.accept("w", self.setKey, ["w", True])
self.accept("s", self.setKey, ["s", True])
self.accept("a", self.setKey, ["a", True])
self.accept("d", self.setKey, ["d", True])
self.accept("w-up", self.setKey, ["w", False])
self.accept("s-up", self.setKey, ["s", False])
self.accept("a-up", self.setKey, ["a", False])
self.accept("d-up", self.setKey, ["d", False])
def setKey(self, key, value):
self.keyMap[key] = value
def moveCar(self, task):
if self.keyMap["w"]:
self.car.setY(self.car, 0.1 * self.dt)
if self.keyMap["s"]:
self.car.setY(self.car, -0.1 * self.dt)
if self.keyMap["a"]:
self.car.setH(self.car, 1 * self.dt)
if self.keyMap["d"]:
self.car.setH(self.car, -1 * self.dt)
return task.cont
def moveCam(self, task):
self.cam.setX(self.cam, self.dt * 0.05)
if(self.cam.getX() > 0):
self.cam.reparentTo(self.car)
self.cam.setY(self.car, -10)
self.cam.setZ(self.car, 3)
self.cam.lookAt(self.car)
taskMgr.add(self.moveCar, "Car Control")
return task.done
return task.cont
def title(self):
self.image = OnscreenImage(image = ("playbutton.png"), scale = (1.8, 1, 1),
pos = (0, 0, 0))
self.image.setTransparency(True)
self.text = OnscreenText(text = "Test Game - Hit Play Button to Play",
scale = (0.2, 0.2, 0.2), pos = (0, 0.7), fg = (0, 1, 0, 1), bg = (0, 0, 0, 0.3))
self.button = DirectButton(image = ("playbutton.png"),
scale = (0.3, 0.1, 0.1), pos = (0, 0, -0.8), command = self.removeTitle)
self.button.setTransparency(True)
def removeTitle(self):
self.image.setScale(0.3, 0, 0.1)
self.image.setPos(-1.4, 0, -0.8)
self.text.remove_node()
self.button.remove_node()
base.setBackgroundColor(0.5, 0.5, 0.5)
self.environ = loader.loadModel("environ")
self.environ.reparentTo(render)
self.environ.setScale(10)
self.environ.setPos(-8, 42, 0)
self.sound = loader.loadSfx("models/audio/sfx/GUI_click.wav")
self.sound.play()
taskMgr.add(self.moveCam, "Camera Control")
app = MyApp()
app.run()
I would like to make it so my self.car model can jump around, and of course, jump once, not hover up in the air, going higher and higher when the space bar is held down. Thanks!