我正在 Ursina 中制作 3D FPS,我希望我的手臂皮肤与武器作为图像,而不是实际的 3D 模型。有谁知道如何做到这一点 ?我尝试使用文档中的 Animate,但这会将图像加载为场景中的对象。
我可以做的是定义一个以玩家为父级和位置参数的四边形,以便它跟随我并且我在正确的位置看到它,但即使这样也行不通,因为纹理参数不接受 gif。
那么,有人知道该怎么做吗?
我正在 Ursina 中制作 3D FPS,我希望我的手臂皮肤与武器作为图像,而不是实际的 3D 模型。有谁知道如何做到这一点 ?我尝试使用文档中的 Animate,但这会将图像加载为场景中的对象。
我可以做的是定义一个以玩家为父级和位置参数的四边形,以便它跟随我并且我在正确的位置看到它,但即使这样也行不通,因为纹理参数不接受 gif。
那么,有人知道该怎么做吗?
您可以加载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
可悲的是,我似乎找不到播放 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()