使用Ursina Engine开发Python版Minecraft时右键放置方块无响应求助
问题定位
- 输入事件回调方法名不符合框架要求:Ursina 引擎触发输入事件时会调用实体的小写
input方法,你代码中定义的是大写开头的Input方法,框架无法识别调用,所有方块的输入逻辑都不会生效。 - 按键绑定逻辑与需求不符:你需要右键实现放置方块功能,但现有代码中放置方块的逻辑绑定在左键,删除方块的逻辑绑定在右键,与预期行为相反。
修复后完整代码
from ursina import * from ursina.prefabs.first_person_controller import FirstPersonController # 类名可选修改为行业通用的Voxel,原Vovel也可正常运行 class Voxel(Button): def __init__(self, position = (0,0,0)): super().__init__( parent=scene, position=position, model='cube', origin_y = 0.5, texture= 'white_cube', color= color.white, highlight_color = color.lime, ) # 方法名修改为小写input,适配Ursina的回调规则 def input(self, key): if self.hovered: # 右键放置方块 if key == 'right mouse down': voxel = Voxel(position= self.position + mouse.normal) # 左键删除方块 if key == 'left mouse down': destroy(self) app = Ursina() for z in range(8): for x in range(8): voxel = Voxel(position= (x,0,z)) player = FirstPersonController() app.run()
补充说明
如果不需要调整删除逻辑,仅需实现右键放置功能,也可以只修改方法名为小写 input,保持原有按键绑定逻辑即可。
内容的提问来源于stack exchange,提问作者Amir Ax
相关产品推荐
相关产品推荐

