如何在Ursina中通过if语句调整DirectionalLight的位置与旋转?
方向光切换失效的问题解决
先看你代码里的几个明显问题:
- 语法错误:第一个
DirectionalLight的rotation参数没写完,rotation=(0, 45,缺少第三个数值和闭合括号,这会直接导致代码运行报错,先补全这个参数(比如改成rotation=(0, 45, 0))。 - 逻辑错误:在
input方法里,你连续执行drlight.enabled = True和drlight.enabled = False,等于没做任何切换,而且完全没操作drlight2的状态,根本达不到切换灯光的目的。 - 缩进错误:
input方法内的代码缩进不规范,Python对缩进要求严格,错误的缩进会导致代码逻辑不执行或者报错。
修正后的代码示例:
灯光初始化部分(补全语法错误):
drlight = DirectionalLight(parent=pivot, y=3, z=-6, shadows=True, rotation=(0, 45, 0)) drlight2 = DirectionalLight(parent=pivot, y=100, z=120, shadows=True, rotation=(45, -45, 45)) drlight.enabled = True drlight2.enabled = False
输入事件处理部分(修正逻辑和缩进):
def input(self, key): if self.hovered: if key == 'left mouse down': if animloaded: # 切换两个灯光的启用状态,实现角度切换 drlight.enabled = not drlight.enabled drlight2.enabled = not drlight2.enabled
或者用更明确的互斥逻辑:
def input(self, key): if self.hovered: if key == 'left mouse down': if animloaded: if drlight.enabled: drlight.enabled = False drlight2.enabled = True else: drlight.enabled = True drlight2.enabled = False
另外还要确认animloaded变量是否正确定义且触发时为True,self.hovered的状态是否准确,这些也会影响切换逻辑的执行。
内容的提问来源于stack exchange,提问作者iceneoon
相关产品推荐
相关产品推荐

