Panda3D 隐藏鼠标光标并实现鼠标控制相机旋转
使用 Panda3D 创建的程序,实现了隐藏鼠标光标、设置鼠标控制相机旋转角度等功能。
from panda3d.core import WindowProperties
from direct.showbase.ShowBase import ShowBase
class MyApp(ShowBase):
def __init__(self):
ShowBase.__init__(self)
# 隐藏鼠标光标
props = WindowProperties()
props.setCursorHidden(True)
self.win.requestProperties(props)
# 设置鼠标控制
self.accept('mouse1', self.toggleMouseControl)
self.mouseControlEnabled = False
def toggleMouseControl(self):
self.mouseControlEnabled = not self.mouseControlEnabled
props = WindowProperties()
props.setPointerHidden(self.mouseControlEnabled)
self.win.requestProperties(props)
def update(self):
if self.mouseControlEnabled:
# 获取鼠标移动的相对位置
md = self.win.getPointer(0)
x = md.getX()
y = md.getY()
# 计算相机的旋转角度
self.camera.setH(self.camera.getH() - x * 0.2)
self.camera.setP(self.camera.getP() - y * 0.2)
# 继续更新场景
return task.cont
app = MyApp()
app.run()
功能说明:
- 隐藏鼠标光标:通过
WindowProperties设置setCursorHidden为True来隐藏鼠标光标。 - 设置鼠标控制:使用
accept方法监听鼠标左键点击事件,并在点击时调用toggleMouseControl方法切换鼠标控制状态。 - 鼠标控制相机旋转:当鼠标控制开启时,获取鼠标移动的相对位置,并根据位置计算相机的旋转角度。
代码解释:
WindowProperties类用于设置窗口属性,包括隐藏鼠标光标等。ShowBase类是 Panda3D 的基础类,提供了基本的功能,例如创建窗口、加载模型、渲染场景等。accept方法用于监听事件,例如键盘按键、鼠标点击等。getPointer方法用于获取鼠标的位置。setH和setP方法用于设置相机的水平和垂直旋转角度。
运行程序:
将代码保存为 main.py 文件,并使用 Python 运行该文件。
注意:
- 需要安装 Panda3D 库。
- 鼠标控制只在鼠标控制开启时生效。
- 可以根据需要调整旋转速度等参数。
原文地址: https://www.cveoy.top/t/topic/pgV3 著作权归作者所有。请勿转载和采集!