Also here, sorry it took me a while to get this up, with school and all.
#all things you'll need for a while
import direct.directbase.DirectStart #Initialize Panda and create a window
import random, sys, os, math, time, threading, socket #libs
from direct.gui.OnscreenText import OnscreenText
from direct.gui.OnscreenImage import OnscreenImage
from direct.gui.DirectGui import *
from direct.task.Task import Task #Task run
from pandac.PandaModules import Fog
from pandac.PandaModules import *
from pandac.PandaModules import WindowProperties
from pandac.PandaModules import Shader
from pandac.PandaModules import Point3,Vec4
from pandac.PandaModules import NodePath
from pandac.PandaModules import CollisionTraverser,CollisionNode
from pandac.PandaModules import CollisionHandlerQueue,CollisionRay
from direct.showbase.DirectObject import DirectObject
class World(DirectObject):
def __init__(self):
#Here we till the code to run the def. code we setup
self.loadcloth()
self.loadskyground()
self.loadmananitmations()
self.Controls()
###############################################################################
#Then we bind the keys and set them up to do
def Controls(self):
self.keyMap = {"left":0, "right":0, "forward":0, "back":0,}
# Accept the control keys for movement
self.accept("escape", sys.exit)
self.accept("a", self.setKey, ["left",1])
self.accept("d", self.setKey, ["right",1])
self.accept("w", self.setKey, ["forward",1])
self.accept("s", self.setKey, ["back",1])
self.accept("a-up", self.setKey, ["left",0])
self.accept("d-up", self.setKey, ["right",0])
self.accept("w-up", self.setKey, ["forward",0])
self.accept("s-up", self.setKey, ["back",0])
taskMgr.add(self.move,"moveTask")
###############################################################################
def loadcloth(self):
Cloth1 = loader.loadTexture("Models/Man cloth.png")
Cloth2 = loader.loadTexture("Models/Man cloth2.png")
Cloth3 = loader.loadTexture("Models/Man cloth3.png")
Cloth4 = loader.loadTexture("Models/Man cloth4.png")
Cloth5 = loader.loadTexture("Models/Man cloth5.png")
Cloth6 = loader.loadTexture("Models/Man cloth6.png")
###############################################################################
def loadskyground(self):
Sky = loader.loadModel("Models/Skydome")
Sky.reparentTo(render)
Sky.setScale(500,500,500)
Sky.setPos(0,0,-9)
Ground = loader.loadModel("Models/Ground")
Ground.reparentTo(render)
Ground.setScale(500,500,500)
Ground.setPos(0,0,-9.5)
###############################################################################
def loadmananitmations(self):
Man = Actor.Actor("Models/Test man",{"Waving":"Models/Test man-Waving"})
Man.reparentTo(render)
Man.loop("Waving")
Man.setTexture(Cloth5,1)
Man2 = Actor.Actor("Models/Test man",{"Trip":"Models/Test man-Trip"})
Man2.reparentTo(render)
Man2.loop("Trip")
Man2.setPos(10,-15,0.5)
Man2.setTexture(Cloth2,1)
Man3 = Actor.Actor("Models/Test man",{"Walking":"Models/Test man-Walking"})
Man3.reparentTo(render)
Man3.loop("Walking")
Man3.setPos(-10,-15, 1)
Man3.setTexture(Cloth3,1)
###############################################################################
#Records the state of the arrow keys
def setKey(self, key, value):
self.keyMap[key] = value
#keys-
def move(self, task):
elapsed = task.time - self.prevtime
if (self.keyMap["left"]!=0):
base.camera.setX(base.camera, - (elapsed*25))
if (self.keyMap["right"]!=0):
base.camera.setX(base.camera, + (elapsed*25))
if (self.keyMap["forward"]!=0):
base.camera.setY(base.camera, + (elapsed*25))
if (self.keyMap["back"]!=0):
base.camera.setY(base.camera, - (elapsed*25))
self.prevtime = task.time
return Task.cont
World()
run()
Should work…