【问题标题】:Show image on screen with ursina使用 ursina 在屏幕上显示图像
【发布时间】:2021-09-08 20:01:03
【问题描述】:

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

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

那么,有谁知道怎么做呢?

【问题讨论】:

  • 使用parent=camera.ui 创建实体,使其在界面而不是场景(世界)上具有位置。我在回答中详细说明了。

标签: python python-3.x ursina


【解决方案1】:

您可以使用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

【讨论】:

  • 谢谢,但我知道该怎么做;这不是我的意思。我的意思是:有没有办法可以在屏幕上显示图像,而不是 3D 模型?所以我的武器不是像我的世界那样的立方体,而是我可以看到的 2D 图像。就像,你有你的健康栏:那不是跟随你的 3D 模型,它是屏幕上的 2D,我想以这种方式制作图像
  • 将其设为quad 并设置您的纹理
  • 是的,但是你读过我写的吗?纹理不接受 GIF 或动画的东西,这意味着我有我的手,但不能为它们制作动画
  • 您之前没有提到动画 gif,您只是在谈论图像。我不确定 Ursina 是否接受 gif 动画,尽管它确实支持视频纹理。你看过Entity Basics中的纹理部分吗?
  • @QuantumSushi 我更新了我对动画 gif 的回答。如果我误解了什么,请告诉我。
【解决方案2】:

遗憾的是,我似乎找不到播放 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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多