hey all, i have a problem.i wanted to do
if jump == 0:
#code
but i get an error.
it says
Known pipe types:
wdxGraphicsPipe9
(3 aux display modules not yet loaded.)
:util(warning): Adjusting global clock's real time by 0.318433 seconds.
DirectStart: Starting the game.
Warning: DirectNotify: category 'Interval' already exists
Creating Player and Levels
Traceback (most recent call last):
File "C:\Panda3D-1.4.2\Work\main.py", line 42, in ?
w = Main()
File "C:\Panda3D-1.4.2\Work\main.py", line 27, in __init__
self.start()
File "C:\Panda3D-1.4.2\Work\main.py", line 31, in start
self.Player = Player() #Init player
File "C:\Panda3D-1.4.2\Work\source\Player.py", line 49, in __init__
self.controls()
File "C:\Panda3D-1.4.2\Work\source\Player.py", line 71, in controls
self.accept("space", self.jump)
File "C:\Panda3D-1.4.2\direct\src\showbase\DirectObject.py", line 24, in accept
return messenger.accept(event, self, method, extraArgs, 1)
File "C:\Panda3D-1.4.2\direct\src\showbase\Messenger.py", line 62, in accept
assert callable(method), (
AssertionError: method not callable in accept (ignoring): 0 []
code
# Player Script
from pandac.PandaModules import * # Import the Panda Modules
from direct.gui.OnscreenText import OnscreenText
from direct.actor.Actor import Actor
from direct.actor import Actor
from direct.task.Task import Task
from direct.showbase.DirectObject import DirectObject
import random, sys, os, math
from direct.controls.GravityWalker import GravityWalker
class Player(DirectObject):
def __init__(self):
base.disableMouse()
self.player = render.attachNewNode("camera_dummy_node")
#self.player.setPos(-5, 50, 8)
self.player.setHpr(0, 0, 0)
camera.setHpr ( 0, 0, 0 )
camera.reparentTo(self.player)
camera.setPosHpr(Vec3(0,10,0),Vec3(0,10,0))
self.heading = 180
self.pitch = 0
self.prevtime = 0
Node=NodePath(PandaNode("PhysicsNode"))
Node.reparentTo(render)
self.an=ActorNode("playerphysics")
anp=Node.attachNewNode(self.an)
base.physicsMgr.attachPhysicalNode(self.an)
self.an.getPhysicsObject().setMass(100)
self.player.reparentTo(anp)
self.sphere = CollisionSphere(0, 0, 0, 1)
self.playercol = self.player.attachNewNode(CollisionNode('sphere'))
self.playercol.node().addSolid(self.sphere)
self.playercol.show()
base.cTrav = CollisionTraverser()#traverser
base.cTrav.setRespectPrevTransform(1)
self.pusher = PhysicsCollisionHandler()
self.pusher.addCollider(self.playercol, anp)
base.cTrav.addCollider(self.playercol, self.pusher)
base.cTrav.showCollisions(render)
self.controls()
#end
def controls (self):
self.sens = 100
self.crouch = False
self.jump = 0
self.moveforward = "w"
self.moveforwardup = "w-up"
#Key Library. all controls HAVE to go here
self.keys = {"turnLeft" : 0, "turnRight": 0,"accel": 0, "fire": 0, "deaccel":0, "crouch" : 0}
self.accept("escape", sys.exit) #Escape quits
#Other keys events set the appropriate value in our key dictionary
self.accept("a", self.setKey, ["turnLeft", 1])
self.accept("a-up", self.setKey, ["turnLeft", 0])
self.accept("d", self.setKey, ["turnRight", 1])
self.accept("d-up", self.setKey, ["turnRight", 0])
self.accept(self.moveforward, self.setKey, ["accel", 1])
self.accept(self.moveforwardup, self.setKey, ["accel", 0])
self.accept("s", self.setKey, ["deaccel", 1])
self.accept("s-up", self.setKey, ["deaccel", 0])
self.accept("space", self.jump)
self.accept("control", self.setKey, ["crouch", 1])
self.accept("control-up", self.setKey, ["crouch", 0])
self.gameTask = taskMgr.add(self.gameLoop, "gameLoop")
self.gameTask.last = 0
def setKey(self, key, val):
self.keys[key] = val
def gameLoop(self, task):
self.elapsed = task.time - self.prevtime
self.MouseTask()
if self.keys["turnLeft"]:
self.strafe(-1)
if self.keys["turnRight"]:
self.strafe(1)
if self.keys["accel"]:
self.walk()
if self.keys["deaccel"]:
self.back()
self.prevtime = task.time
return Task.cont
def strafe(self,dir):
elapsed = self.elapsed
strafe = self.player.getNetTransform().getMat().getRow3(0)
strafe.setZ(0)
strafe.normalize()
self.player.setPos(self.player.getPos() + strafe*(elapsed*45*dir))
def walk(self):
self.player.setY(self.player, 1)
def jump(self):
if self.jump == 0:
myInterval1=self.player.posInterval(2.0,Point3(0,0,60))
myInterval1.start()
self.jump = 1
def back(self):
self.player.setY(self.player, -1)
def MouseTask(self):
try:
x = base.win.getPointer(0).getX()
y = base.win.getPointer(0).getY()
if base.win.movePointer(0, 100, 100):
self.heading = self.heading - (x - 100)*0.2
self.pitch = self.pitch - (y - 100)*0.2
if(self.pitch < -80): self.pitch = -80
if(self.pitch > 80): self.pitch = 80
self.player.setHpr(self.heading,self.pitch,0)
except: pass