繁体   English   中英

我的 python Minecraft 副本有问题

[英]I have a problem with my python Minecraft copy

我正在使用“Ursina 引擎”我的项目是制作 Minecraft 的副本,然后我发现了一个问题,即每次运行该程序以及当我想右键单击放置一个块时,没有任何反应。

感谢可以帮助我找到问题并告诉我如何解决的人 * 这是我的代码:*

    from ursina import *
    from ursina.prefabs.first_person_controller import FirstPersonController
    class Vovel(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,
            )
        def Input(self, key):
            if self.hovered:
                if key == 'left mouse down':
                    vovel = Vovel(position= self.position + mouse.normal)
                if key == 'right mouse down':
                    destroy(self)
    app = Ursina()
    for z in range(8):
        for x in range(8):
            vovel = Vovel(position=  (x,0,z))
    player = FirstPersonController()
    app.run()

结尾。

输入函数的名称是错误的。 Input应该是input

输入函数应该是input而不是Input ,其余的代码是绝对正确的。 所以,你的代码应该是:

from ursina import *
from ursina.prefabs.first_person_controller import FirstPersonController


class Vovel(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,
    )

def input(self, key):
    if self.hovered:
        if key == 'left mouse down':
            vovel = Vovel(position=self.position + mouse.normal)
        if key == 'right mouse down':
            destroy(self)


app = Ursina()
for z in range(8):
for x in range(8):
    vovel = Vovel(position=(x, 0, z))
player = FirstPersonController()
app.run()

此代码有效,您可以通过左键单击放置一个块并通过右键单击删除一个块!

您只需将鼠标左键替换为鼠标右键和鼠标右键替换为鼠标左键,但我将此代码用于“Minecraft”:`

from ursina.prefabs.first_person_controller import *
app=Ursina()
FirstPersonController()
Sky()
def voxel(position:Vec3):
    Voxel=Entity(model="assets/block.obj", position=position, collider="box", texture="assets/sand_block.jpg",origin_y=0.5,scale=0.5,on_click=lambda:destroy(Voxel))
for x in range(20):
    for z in range(20):
        voxel(position=Vec3(x,0,z))
def input(key):
    if key=="right mouse down":
        vox=voxel(position=Vec3(round(mouse.world_point.x),ceil(mouse.world_point.y),round(mouse.world_point.z)))
app.run()`

啊,现在我明白你的问题了,你必须将输入更改为输入,rest 就可以了。

那么你有两个问题,一个是那行:你的代码

问题是它应该是体素而不是元音

第二个问题是你搞砸了“鼠标右键”和“鼠标左键”

这显然是问题所在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM