嗨,我正在尝试在panda3d v1.8.1(python)上制作一个游戏,但是控件看起来非常草率。一个人必须按住按键一两秒钟才能让事情发生。有没有办法让panda3d更快地接受控制?你知道吗
以下是我的密钥处理程序的代码:
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
a = KeyHandler()
def set_cam(task) :
camera.setPos(camx,camy,camz)
camera.setHpr(camxy,camyz,camzx)
taskMgr.add(set_cam, "setcamTask")
我使用的相机是panda3d的默认相机
任何帮助都将不胜感激!你知道吗
您应该避免使用“-repeat”处理程序。如果你在任何文本框中按下一个键,它们的触发时间和出现更多字母的时间一样长。你知道吗
通常的方法是使用
dict
保持键状态:这还允许您更轻松地定义密钥的用户设置。你知道吗
不过,这并不是该代码的第一个问题,甚至不是最重要的问题。
set_cam
应该是KeyHandler
的一个方法,而不是声明每个变量都是全局的,并且应该用每个帧的dt乘以移动量,以保持游戏在不同帧速率下保持相同的速度。你知道吗相关问题 更多 >
编程相关推荐