1

我正在 Ursina 中制作 3D FPS,我希望我的手臂皮肤与武器作为图像,而不是实际的 3D 模型。有谁知道如何做到这一点 ?我尝试使用文档中的 Animate,但这会将图像加载为场景中的对象。

我可以做的是定义一个以玩家为父级和位置参数的四边形,以便它跟随我并且我在正确的位置看到它,但即使这样也行不通,因为纹理参数不接受 gif。

那么,有人知道该怎么做吗?

4

2 回答 2

2

您可以加载Animation()创建实体的动画 gif。作为界面的一部分,您需要将其附加到 UI:

from ursina import *

app = Ursina()
gif = 'animation.gif'
a = Animation(gif, parent=camera.ui)
a.scale /= 5 # adjust right size to your needs
a.position = (0.5, -0.5) # lower right of the screen
app.run()

您将需要imageio安装 Python 包来加载 gif。


旧答案

您用于枪的实体必须使用其parent参数锚定到界面。这是一个 Minecraft 风格的手的例子(实际上只是一个方块):

class Hand(Entity):
    def __init__(self):
        super().__init__(
            parent=camera.ui,
            model='cube',
            position=Vec2(0.5, -0.3),
            scale=(0.2, 0.2, 0.5),
            rotation=(150, -30, 0)
        )

重要的部分是parent=camera.ui

于 2021-06-27T03:15:27.900 回答
1

可悲的是,我似乎找不到播放 gif 的方法。我知道,@Jan Wilamowski更新了他的答案,但在我的项目中,这不起作用。但是,您可以通过创建quad具有图像纹理的实体来在此屏幕上显示静态图像,如下所示:

class yourimage(Entity):
    def __init__(self):
        super().__init__(
            parent=camera.ui,
            model='quad',
            #size, position, and rotate your image here
            texture = 'yourimage')
yourimage()
于 2021-11-18T22:35:42.520 回答