Advertisement
Guest User

Panda3D Code

a guest
Nov 28th, 2014
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.27 KB | None | 0 0
  1. from direct.showbase.ShowBase import ShowBase
  2. from direct.showbase.DirectObject import DirectObject
  3. from direct.actor.Actor import Actor
  4. from direct.gui.DirectGui import DirectFrame
  5.  
  6. class World(ShowBase, DirectObject):
  7.     def __init__(self):
  8.         ShowBase.__init__(self)
  9.  
  10.         self.jump = 0.0
  11.  
  12.         self.keyMap = {"w" : False,
  13.                        "s" : False,
  14.                        "a" : False,
  15.                        "d" : False}
  16.  
  17.         self.accept("w", self.setKey, ["w", True])
  18.         self.accept("s", self.setKey, ["s", True])
  19.         self.accept("a", self.setKey, ["a", True])
  20.         self.accept("d", self.setKey, ["d", True])
  21.         self.accept("w-up", self.setKey, ["w", False])
  22.         self.accept("s-up", self.setKey, ["s", False])
  23.         self.accept("a-up", self.setKey, ["a", False])
  24.         self.accept("d-up", self.setKey, ["d", False])
  25.         self.accept("space", self.modelJump)
  26.  
  27.         base.disableMouse()
  28.  
  29.         self.loadModels()
  30.         self.createFrame()
  31.  
  32.         taskMgr.add(self.moveModel, "Model Control")
  33.         taskMgr.add(self.controlCam, "Camera Control")
  34.  
  35.     def createFrame(self):
  36.  
  37.         frame = DirectFrame(frameSize = (-0.5, 0.5, -0.5, 0.5),
  38.                             frameColor = (0, 0, 0, 0.5),
  39.                             pos = (0, 0, 0))
  40.  
  41.     def modelJump(self):
  42.        
  43.         self.jump = 5.0
  44.  
  45.         if self.jump == 0.0:
  46.             self.jump = 5.0
  47.  
  48.     def moveModel(self, task):
  49.  
  50.         if self.keyMap["w"]:
  51.             self.panda.setY(self.panda, -1.5)
  52.            
  53.             if self.panda.getCurrentAnim() != "walk":
  54.                 self.panda.setPlayRate(1, "walk")
  55.                 self.panda.loop("walk")
  56.                
  57.         if self.keyMap["s"]:
  58.             self.panda.setY(self.panda, 1)
  59.            
  60.             if self.panda.getCurrentAnim() != "walk":
  61.                 self.panda.setPlayRate(-1, "walk")
  62.                 self.panda.loop("walk")
  63.  
  64.         if self.keyMap["w"] == False:
  65.            
  66.             if self.keyMap["s"] == False:
  67.                 self.panda.stop("walk")
  68.  
  69.         if self.keyMap["a"]:
  70.             self.panda.setH(self.panda, 1)
  71.  
  72.         if self.keyMap["d"]:
  73.             self.panda.setH(self.panda, -1)
  74.  
  75.         self.jump = self.jump - 10.0 * globalClock.getDt()
  76.         self.panda.setZ(self.panda.getZ() + self.jump * globalClock.getDt())
  77.  
  78.         if self.panda.getZ() <= 0.0:
  79.             self.jump = 0.0
  80.             self.panda.setZ(0.0)
  81.  
  82.         return task.cont
  83.    
  84.     def controlCam(self, task):
  85.  
  86.         self.camera.setX(self.panda, 0)
  87.         self.camera.setY(self.panda, 2500)
  88.         self.camera.setZ(self.panda, 500)
  89.         self.camera.setH(self.panda, 180)
  90.  
  91.         return task.cont
  92.  
  93.     def setKey(self, key, value):
  94.  
  95.         self.keyMap[key] = value
  96.  
  97.     def loadModels(self):
  98.  
  99.         self.panda = Actor("models/panda-model",
  100.                            {"walk": "models/panda-walk4"})
  101.         self.panda.reparentTo(render)
  102.         self.panda.setScale(0.005)
  103.         self.panda.setPos(0, 20, 0)
  104.  
  105.         self.environ = loader.loadModel("models/environment")
  106.         self.environ.reparentTo(render)
  107.         self.environ.setScale(0.25)
  108.         self.environ.setPos(0, 60, 0)
  109.  
  110. app = World()
  111. app.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement