You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 04:06:02