from direct.showbase.ShowBase import ShowBase
from direct.actor.Actor import Actor
from direct.showbase import DirectObject
from direct.task import Task
from panda3d.core import Fog
from panda3d.core import CollisionTraverser, CollisionHandlerPusher, CollisionSphere, CollisionNode, CollisionTube
from direct.showbase.ShowBase import ShowBase
from direct.gui.DirectGui import DirectButton, DirectWaitBar
from direct.gui.DirectGui import *
class MyApp(ShowBase):
def __init__(self):
ShowBase.__init__(self)
self.gameOverScreen = DirectDialog(frameSize=(-0.7, 0.7, -0.7, 0.7),
fadeScreen=0.4,
relief=DGG.FLAT)
self.gameOverScreen.hide()
self.label = DirectLabel(text="Game Over!",
parent=self.gameOverScreen,
scale=0.1,
pos=(0, 0, 0.2))
self.label.hide()
self.cTrav = CollisionTraverser()
self.pusher = CollisionHandlerPusher()
self.bar = DirectWaitBar(pos=(0, 0, -0.7))
self.bar['range'] = 100
self.bar['value'] = 100
self.taskMgr.doMethodLater(1, self.life, "life-")
# Load the environment model.
music = self.loader.loadMusic('/Users/38167/PycharmProjects/viren/venv/minecraft.mp3')
music.setLoop(True)
music.setVolume(1)
music.play()
self.environ = self.loader.loadModel("environment")
self.environ.reparentTo(self.render)
tex = self.loader.loadTexture('/Users/38167/PycharmProjects/viren/venv/Png.png')
self.environ.setTexture(tex, 1)
# We do not have a skybox, so we will just use a sky blue background color
self.setBackgroundColor(0.53, 0.80, 0.92, 1)
myFog = Fog("Fog Name")
myFog.setColor(0, 0 , 0)
myFog.setExpDensity(0.01)
self.render.setFog(myFog)
self.pandaActor = Actor("models/panda-model",
{"walk": "models/panda-walk4"})
self.pandaActor.setScale(0.005, 0.005, 0.005)
self.pandaActor.reparentTo(self.render)
colliderNode = CollisionNode("player")
colliderNode.addSolid(CollisionSphere(0, 0, 345, 900))
collider = self.pandaActor.attachNewNode(colliderNode)
self.pusher.addCollider(collider, self.pandaActor)
self.cTrav.addCollider(collider, self.pusher)
self.pusher.setHorizontal(True)
wallSolid = CollisionTube(-20.0, 0, 0, 20.0, 0, 0, 0.2)
wallNode = CollisionNode("wall")
wallNode.addSolid(wallSolid)
wall = self.render.attachNewNode(wallNode)
wall.setY(20.0)
wallSolid = CollisionTube(-20.0, 0, 0, 20.0, 0, 0, 0.2)
wallNode = CollisionNode("wall")
wallNode.addSolid(wallSolid)
wall = self.render.attachNewNode(wallNode)
wall.setY(-8.0)
wallSolid = CollisionTube(0, -20.0, 0, 0, 20.0, 0, 0.2)
wallNode = CollisionNode("wall")
wallNode.addSolid(wallSolid)
wall = self.render.attachNewNode(wallNode)
wall.setX(20.0)
wallSolid = CollisionTube(0, -20.0, 0, 0, 20.0, 0, 0.2)
wallNode = CollisionNode("wall")
wallNode.addSolid(wallSolid)
wall = self.render.attachNewNode(wallNode)
wall.setX(-20.0)
self.accept("arrow_up", self.Move)
self.accept("arrow_up-repeat", self.Move)
self.accept("arrow_up-up", self.stopMove)
self.accept("arrow_right", self.Move2)
self.taskMgr.add(self.camera_task, "camera")
def Move(self):
self.WalkSound = self.loader.loadSfx("/Users/38167/PycharmProjects/viren/venv/walk.mp3")
self.pandaActor.setY(self.pandaActor, -200)
self.pandaActor.setPlayRate(2, "walk")
walk = self.pandaActor.getAnimControl("walk")
self.WalkSound.play()
if not walk.isPlaying():
self.pandaActor.loop("walk")
def stopMove(self):
self.pandaActor.stop("walk")
def Move2(self):
self.pandaActor.setH(self.pandaActor, -90)
def camera_task(self, task):
self.camera.setPos(self.pandaActor.getX(), self.pandaActor.getY() + 15, 5)
self.camera.lookAt(self.pandaActor)
return Task.cont
def life(self, task):
if (self.bar['value'] >= 0):
self.bar['value'] -= 1
else:
self.gameOverScreen.show()
self.label.show()
return task.done
return task.again
app = MyApp()
app.run()
Here is my current code. How do I implement a feature that will allow jumping? I tried to look at other sources but it gave me a 404 error. Srry if this has been said before.
Thanks!
EDIT1: this is what I have so far
self.accept("space", self.spacePressed)
def jumpingAction(self, task):
dt = globalClock.getDt()
self.jumpSpeed -= 10*dt
self.pandaActor.setZ(self.pandaActor, self.jumpSpeed )
def spacePressed(self):
self.taskMgr.add(self.jumpingAction, "jump")
Don’t really know where to go beyond this point so if anyone has any ideas please leave them below. Thanks again!