self.accept(“w”,self.walk)
self.accept(“j”,selp.jump)
if i press “w” and then press “j” my actor not jump. actor jump if i release “w” then press “j”.
Any tutorial about this, please?
self.accept(“w”,self.walk)
self.accept(“j”,selp.jump)
if i press “w” and then press “j” my actor not jump. actor jump if i release “w” then press “j”.
Any tutorial about this, please?
That’s not the way it works for me. For me, I get both keys independently, whether I press them at the same time or not. Only the modifier buttons like shift, alt, and control are special.
What OS are you running on?
David
More likely, the problem is somewhere in the way you treat the jump and walk keys. We’ll need to see some more code to tell you what’s wrong. Most likely, it’s a small logic error in the game loop or so.
Maybe this will help: It says selp, instead of self?
Thanks for reply…
Here is my code (sorry i’m beginner)
class Game(DirectObject):
#constructor
def __init__(self):
#base.disableMouse()
self.GameControl()
self.Stage1()
def KontrolGame(self):
self.accept("w",self.Walk)
self.accept("w-up",self.Stop)
self.accept("a",self.Turn,[-1])
self.accept("d",self.Turn,[1])
self.accept("space",self.Jump)
def LoadModel(self):
#load game model
self.Hero=Actor.Actor("models/Hero.egg",{"Walk":"models/Hero-walk.egg"})
self.Hero.reparentTo(render)
self.Hero.setScale(0.1,0.1,0.1)
self.Hero.setPos(-6,0,0.4)
self.Hero.pose("Jalan",15)
self.Hero.setHpr(-90,0,0)
self.dummy = render.attachNewNode('dummy')
self.dummy.setPos(0,0,0)
def Stage1(self):
#load stage 1
self.LoadModel()
self.Terrain1=loader.loadModel("models/Stage1.egg")
self.Terrain1.reparentTo(render)
self.InitCollision()
def InitCollision(self):
#
ray = CollisionRay(0,0,5,0,0,-1)
self.HeroC = self.Hero.attachNewNode(CollisionNode('cnode'))
self.HeroC.node().addSolid(ray)
self.HeroC.show()
self.HeroC.node().setIntoCollideMask( BitMask32.allOff())
self.HeroC.node().setFromCollideMask( BitMask32.bit( 2 ) )
plane1 = CollisionPolygon(Point3(-10,-10, 0.1), Point3(-2,-10,0.1),Point3(-2,10,0.1), Point3(-10,10,0.1))
plane2 = CollisionPolygon(Point3(-2,-10, 0.1), Point3(1,-10,-0.9),Point3(1,10,-0.9), Point3(-2,10,0.1))
plane3 = CollisionPolygon(Point3(1,-10,-0.9), Point3(5,-10,-0.9),Point3(5,10,-0.9), Point3(1,10,-0.9))
self.LevelCP = self.dummy.attachNewNode(CollisionNode('cnodeLevel'))
self.LevelCP.node().addSolid(plane1)
self.LevelCP.node().addSolid(plane2)
self.LevelCP.node().addSolid(plane3)
self.LevelCP.show()
self.LevelCP.node().setIntoCollideMask( BitMask32.bit( 2 ))
self.Handlernya = CollisionHandlerQueue()
#self.HandlerCS = CollisionHandlerEvent()
#self.HandlerCS.addInPattern('into-g')
traverser.addCollider(self.HeroC, self.Handlernya)
#traverser.addCollider(self.HeroCS,self.HandlerCS)
traverser.traverse(render)
def DetectCollision(self):
#
self.Handlernya.sortEntries()
entry = self.Handlernya.getEntry(0)
self.point = entry.getSurfacePoint(render)
normal = entry.getSurfaceNormal(render)
#print(entry)
#print(self.point)
def Walk(self):
self.Hero.play("Walk")
self.Hero.loop("Walk",fromFrame=1,toFrame=60)
self.Hero.setPlayRate(1.8, 'Walk')
taskMgr.add(self.Move, "MoveTask")
def Move(self,task):
self.DetectCollision()
Jarak = 0.01
sudut = self.Hero.getH()*math.pi/180.0
dx = Jarak*math.sin(sudut)
dy = Jarak*-math.cos(sudut)
self.Hero.setPos(Point3(self.Hero.getX()-dx,self.Hero.getY()-dy,self.point.getZ()))
return Task.cont
def Turn(self,arah):
HeroTurn = self.Hero.hprInterval(.2,Vec3(self.Hero.getH()-(10*arah),0,0))
HeroTurn.start()
def Stop(self):
taskMgr.remove("MoveTask")
self.Hero.stop()
self.Hero.pose("Walk",15)
def Jump(self):
self.Hero.play("Walk",fromFrame=61,toFrame=90)
self.Hero.loop("Walk",fromFrame=61,toFrame=90)
while self.Hero.getZ()<2:
self.Hero.setPos(Point3(self.Hero.getX(),self.Hero.getY(),self.Hero.getZ()+0.1))
game=Game()
run()
Nggak ada yg salah tuh…
coba nih :
discourse.panda3d.org/viewtopic.php?t=4068
discourse.panda3d.org/viewtopic.php?t=5279
OK, i’ll try it. Thanks.
(Makasih Bos… )