python - How to make panda3d accept controls faster? -


hi trying make game on panda3d v 1.8.1 (python) controls seem sloppy. 1 has keep keys pressed second or 2 make things happen. there way make panda3d accept controls faster ?

here's code of key handler :

 class keyhandler(directobject):        def __init__(self):         self.accept('arrow_left-repeat', self.lookleft)         self.accept('arrow_right-repeat', self.lookright)         self.accept('arrow_up-repeat', self.lookup)         self.accept('arrow_down-repeat', self.lookdown)         self.accept('w-repeat', self.moveforward)         self.accept('s-repeat', self.movebackward)         self.accept('a-repeat', self.moveleft)         self.accept('d-repeat', self.moveright)         self.accept('q-repeat', self.movedown)         self.accept('e-repeat', self.moveup)         self.accept('space', self.dotask)      def lookleft(self):         global camxy         camxy += 2      def lookright(self):         global camxy         camxy -= 2      def lookup(self):         global camyz         camyz += 2      def lookdown(self):         global camyz         camyz -= 2       def moveforward(self):          global camx          if camx < 57 :            camx += 1     def movebackward(self):          global camx          if camx > -32 :            camx -= 1     def moveleft(self):          global camy          if camy < 42 :            camy += 1    def moveright(self):          global camy          if camy > -36 :            camy -= 1    def moveup(self):          global camz          if camz < 15 :            camz += 0.5    def movedown(self):          global camz          if camz >1 :             camz -= 0.5  = keyhandler()  def set_cam(task) :      camera.setpos(camx,camy,camz)     camera.sethpr(camxy,camyz,camzx)  taskmgr.add(set_cam, "setcamtask") 

the camera using default camera of panda3d.

any appreciated !

you should avoid using "-repeat" handlers. take long trigger more letters take appear if hold key down in textbox.

the usual way use dict keeping key state:

class keyhandler(directobject):     keys = {"lookleft": false, "lookright": false}  # etcetera      def __init__(self):         directobject.__init__(self)         self.accept('arrow_left', self.presskey, ["lookleft"])         self.accept('arrow_left-up', self.releasekey, ["lookright"])         taskmgr.add(self.set_cam, "setcamtask")      def presskey(self, key):         self.keys[key] = true      def releasekey(self, key):         self.keys[key] = false      # method passed bound      def set_cam(self, task):         dt = globalclock.getdt()         if self.keys["lookleft"]:             camera.seth(camera.geth() + 2 * dt)         elif self.keys["lookright"]:             camera.seth(camera.geth() + 2 * dt)  = keyhandler() 

this allow define user settings keys more easily.

this not first or important issue code though. set_cam should method of keyhandler instead of declaring every variable global, , should multiply movement each frame's dt keep game looking same speed different framerates.


Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -