【发布时间】:2018-04-24 02:55:09
【问题描述】:
我是godot引擎的新手,我正在尝试制作手机游戏(仅限纵向模式)。我想让背景图像适合屏幕大小。我怎么做?我是否必须导入具有特定尺寸的图像并将它们全部用于各种屏幕?如果我将图像导入大,它只会剪掉不适合屏幕的部分。 另外,在开发过程中,我应该为这些目的使用哪些宽度和高度值?
【问题讨论】:
标签: godot
我是godot引擎的新手,我正在尝试制作手机游戏(仅限纵向模式)。我想让背景图像适合屏幕大小。我怎么做?我是否必须导入具有特定尺寸的图像并将它们全部用于各种屏幕?如果我将图像导入大,它只会剪掉不适合屏幕的部分。 另外,在开发过程中,我应该为这些目的使用哪些宽度和高度值?
【问题讨论】:
标签: godot
使用不同的屏幕尺寸总是有点复杂。尤其是手机游戏,因为屏幕尺寸、分辨率和纵横比不同。
我能想到的最简单的方法是缩放viewport。请记住,您的根节点始终是一个视口。在 Godot 中,您可以在项目设置中拉伸视口(您必须启用拉伸模式选项)。你可以找到一个不错的小教程here。
但是,视口拉伸可能会导致图像失真或边缘出现黑条。
另一种优雅的方法是创建一个比您的视口更大的图像,并定义一个无论分辨率如何都必须在每个设备上显示的区域。 Here 有人在表达我的意思。
我无法真正回答您关于最佳宽度和高度的第二个问题,但我会寻找最典型的手机分辨率和比率并使用该设置。最后,您可能应该从使用要用于测试和调试的手机的宽高比开始。
希望对您有所帮助。
【讨论】:
使用 Godot 3,我可以使用脚本设置精灵/其他 UI 元素的大小和位置。我没有使用显示窗口的拉伸模式。
这是您可以轻松使精灵与视口大小匹配的方法 -
var viewportWidth = get_viewport().size.x
var viewportHeight = get_viewport().size.y
var scale = viewportWidth / $Sprite.texture.get_size().x
# Optional: Center the sprite, required only if the sprite's Offset>Centered checkbox is set
$Sprite.set_position(Vector2(viewportWidth/2, viewportHeight/2))
# Set same scale value horizontally/vertically to maintain aspect ratio
# If however you don't want to maintain aspect ratio, simply set different
# scale along x and y
$Sprite.set_scale(Vector2(scale, scale))
对于移动设备,我建议导入大小为 1080x1920 的 PNG(您说的是纵向)。
【讨论】: