from directshowbaseShowBase import ShowBase # 导入ShowBase类from directactorActor import Actor # 导入Actor类from panda3dcore import LineSegs NodePath Vec3 # 导入LineSegs、NodePath和Vec3类from directtask impor
from direct.showbase.ShowBase import ShowBase # 导入ShowBase类 from direct.actor.Actor import Actor # 导入Actor类 from panda3d.core import LineSegs, NodePath, Vec3 # 导入LineSegs、NodePath和Vec3类 from direct.task import Task # 导入Task类 from math import pi, sin, cos # 导入pi、sin和cos函数 class MyApp(ShowBase): # 定义MyApp类,继承ShowBase类 def init(self): # 定义初始化函数 ShowBase.init(self) # 调用ShowBase类的初始化函数 self.disableMouse() # 禁用鼠标控制 self.keymap = { "w": False, "a": False, "s":False,"d":False} # 定义键盘映射字典 self.character = self.loader.loadModel('可爱柴犬.glb') # 加载汽车模型 self.character.setPos(0,0,0) # 设置汽车的位置 self.character.setH(-90) # 设置汽车的朝向 self.character.reparentTo(self.render) # 将汽车模型添加到场景中 # 监听键盘事件 self.accept("w", self.setKey, ["w", True]) # 监听"w"键按下事件,调用setKey方法,将"w"键的值设置为True self.accept("a", self.setKey, ["a", True]) # 监听"a"键按下事件,调用setKey方法,将"a"键的值设置为True self.accept("s", self.setKey, ["s", True]) # 监听"s"键按下事件,调用setKey方法,将"s"键的值设置为True self.accept("d", self.setKey, ["d", True]) # 监听"d"键按下事件,调用setKey方法,将"d"键的值设置为True self.accept("w-up", self.setKey, ["w", False]) # 监听"w"键松开事件,调用setKey方法,将"w"键的值设置为False self.accept("a-up", self.setKey, ["a", False]) # 监听"a"键松开事件,调用setKey方法,将"a"键的值设置为False self.accept("s-up", self.setKey, ["s", False]) # 监听"s"键松开事件,调用setKey方法,将"s"键的值设置为False self.accept("d-up", self.setKey, ["d", False]) # 监听"d"键松开事件,调用setKey方法,将"d"键的值设置为False self.taskMgr.add(self.update, "update") # 添加任务 def setKey(self, key, value): # 定义setKey函数 self.keymap[key] = value # 更新键盘映射字典 def update(self,task): # 定义update函数 if self.keymap["w"]: # 如果按下了w键 self.character.setY(self.character, 0.1) # 向前移动 if self.keymap["a"]: # 如果按下了a键 self.character.setX(self.character, -0.1) # 向左移动 if self.keymap["s"]: # 如果按下了s键 self.character.setY(self.character, -0.1) # 向后移动 if self.keymap["d"]: # 如果按下了d键 self.character.setX(self.character, 0.1) # 向右移动 return task.cont # 返回任务继续执行 app = MyApp() # 创建MyApp对象 app.run() # 运行程
原文地址: https://www.cveoy.top/t/topic/gqFZ 著作权归作者所有。请勿转载和采集!