[Godot3游戏引擎实践]平台跳跃小游戏(二)-完善游戏世界

欢迎阅读Godot3平台跳跃游戏实践系列文章,本系列将从创建工程开始,记录一个平台跳跃小游戏的制作过程,文章中如有错误或不妥之处欢迎指出。

演示效果

上一篇文章中,我们了解了如何在Godot中导入图片资源、使用精灵表与绘制瓦片地图。本篇继续对游戏世界进行完善,加入背景与多分辨率适配,完成后的效果:

拉拉与拖拖

本篇涉及以下内容:

  • Sprite(精灵)的使用与背景创建
  • 多分辨率适配
  • 拉伸设置详细讲解

添加背景

现在游戏世界看起来还是很单调,我们来添加背景。找到背景图片素材,现在用的这一套资源里背景图片文件以"bg_"开头,在文件管理器中搜索"bg_",选一个喜欢的背景,我这里用的是"bg_grasslands.png"。

然后问题来了,背景图片的大小只有1024x512像素大小,而游戏的设计大小是1024x640,不太够用。还好这个背景比较简单,随便找一个画图工具,把图片上下再填充一部分就好了。
这里我把背景图片修改成了1024x768像素大小:

[Godot3游戏引擎实践]平台跳跃小游戏(二)-完善游戏世界_第1张图片
bg_grasslands

在res://Assets/Images下新建一个Backgrounds目录,把背景图片拖进去。导入之后如果显示会模糊,记得在Import面板中像之前那样修改一下导入设置,或者就想要那种朦胧美那可以不改。

然后按住File System面板中的背景图片文件,把它往工作区里一拖:

[Godot3游戏引擎实践]平台跳跃小游戏(二)-完善游戏世界_第2张图片
添加背景

可以发现Scene面板里多了一个笑脸图标的节点,名称就是背景图片的文件名。Godot自动帮我们创建了一个Sprite(精灵)类型的节点,并且把节点的Texture属性设置为了背景图片。

现在显示还有些不太正常,背景把地图给盖住了,并且由于年老体衰,刚才拖的时候有些手抖,背景的位置也不对,我们一一调整。

在Scene面板中,把背景节点拖到TileMap节点上方,顺便给背景节点改名为Background(右键选择Rename,或者mac直接按⏎,Windows大概是按F2)。
右侧Inspector面板中,展开Sprite下的Offset,将Centered属性取消勾选,展开Node 2D下的Transform,点击Position右侧的还原按钮将节点位置还原为0, 0

[Godot3游戏引擎实践]平台跳跃小游戏(二)-完善游戏世界_第3张图片
背景设置
[Godot3游戏引擎实践]平台跳跃小游戏(二)-完善游戏世界_第4张图片
调整后的场景

看起来还不错,我们点击编辑器右上角的运行按钮运行一下。

怎么还是HelloWorld?因为我们之前把HelloWorld设置为了主场景,现在需要把主场景改为Level1。打开菜单Project->Project Settings,点击左侧Application下的Run,点击右侧MainScene的文件夹按钮,选择Level1.tscn,然后就可以运行了。

[Godot3游戏引擎实践]平台跳跃小游戏(二)-完善游戏世界_第5张图片
设置主场景
[Godot3游戏引擎实践]平台跳跃小游戏(二)-完善游戏世界_第6张图片
运行效果

如果想直接运行当前打开的场景,又不想把它设置为主场景,或者想运行指定的场景,可以试试这两个按钮:

运行按钮

多分辨率适配

我们拖拉缩放一下窗口,会发现内容并没有响应窗口大小的变化:

拖拖与拉拉

这意味着如果运行设备的分辨率大于游戏的设计大小,内容将会显示不全;如果运行设备的分辨率小于游戏的设计大小,内容将会被裁剪。Godot考虑到了这个问题,我们可以通过拉伸设置来适配不同的分辨率。

点击菜单Project->Project Settings打开项目设置,左侧往下拉找到DisplayWindow一项,右侧下拉找到Stretch设置,Mode设置为2dAspect设置为expand

[Godot3游戏引擎实践]平台跳跃小游戏(二)-完善游戏世界_第7张图片
拉伸设置

再次运行,拖拉缩放窗口,内容会随着窗口大小而缩放了,并且宽高比也有了适配。相对于设计尺寸的宽高比,如果窗口更宽,那么水平方向将显示更多内容;如果窗口更高,那么竖直方向将显示更多内容;如果没有更多内容可以显示了,剩余部分将显示画布底色。

拉拉与拖拖

缩放时可能会发现地图瓦片之间出现了撕裂现象,在菜单Project->Project Settings中按如下设置即可:

[Godot3游戏引擎实践]平台跳跃小游戏(二)-完善游戏世界_第8张图片
PixelSnap

至此关于搭建游戏世界的内容就初步介绍完了,我们的游戏世界还有许多待完善的地方,比如地图还没有碰撞体、画面还不会卷动、背景不能连续显示等等,这些内容将在后面的文章中一一讲解。下一篇文章将围绕如何创建游戏的主角展开。

下一篇:[Godot3游戏引擎实践]平台跳跃小游戏(三)-创建游戏的主角

下面是关于拉伸设置的一些介绍,感兴趣的话不妨看看。

什么样的拉伸设置适合我?

Stretch的设置项有许多种搭配,乍一看可能会令人摸不着头脑,但搞清楚之后,就会感觉Godot的这个适配设置还是可圈可点的。

这部分官方也有专门的说明,不过可能是有新增内容,有一部分翻译大佬们似乎还没来得及翻译。所以在此写一下个人的理解。

Mode一项可选择disabled(默认)、2dviewport

  • disabled是完全不拉伸,按照官方的说法,这比较适合3D游戏。
  • 2d,画面将会直接按目标分辨率渲染,内容将会被缩放,如果图片素材的清晰度不够高,在高分辨率下会模糊。这种模式适用于大多数2D游戏。
    [Godot3游戏引擎实践]平台跳跃小游戏(二)-完善游戏世界_第9张图片
    2d
  • viewport,画面将会先按viewport(视区)渲染,即按项目设置里的设计大小渲染,然后viewport再缩放到目标分辨率。这种模式是像素完美渲染(Pixel Perfect Rendering),如果游戏是像素风格,那这种模式是最适合的。
    [Godot3游戏引擎实践]平台跳跃小游戏(二)-完善游戏世界_第10张图片
    viewport

Aspect一项可以选择ignorekeepkeep_widthkeep_heightexpand

  • ignore是完全忽略原有的宽高比,画面会被强行拉伸以适应目标分辨率,比较适合制造一些精神污染。
    [Godot3游戏引擎实践]平台跳跃小游戏(二)-完善游戏世界_第11张图片
    ignore
  • keep是维持设计尺寸的宽高比,以此宽高比进行缩放。如果目标分辨率的宽高比与设计宽高比不符,那么在水平/竖直方向上将会出现黑边。
    [Godot3游戏引擎实践]平台跳跃小游戏(二)-完善游戏世界_第12张图片
    keep
  • keep_width是维持设计尺寸的宽,以内容适应目标分辨率的高。如果目标窗口更宽,那么水平方向将会出现黑边;如果目标窗口更高,那竖直方向将显示更多内容。这种模式比较适合宽度固定的竖版游戏,
    [Godot3游戏引擎实践]平台跳跃小游戏(二)-完善游戏世界_第13张图片
    keep_width
  • keep_height是维持设计尺寸的高,以内容适应目标分辨率的宽,聪明的你应该懂了。这种模式比较适合高度固定的横版游戏。
    [Godot3游戏引擎实践]平台跳跃小游戏(二)-完善游戏世界_第14张图片
    keep_height
  • expand是"我全都要.gif",目标窗口更宽,那就水平方向显示更多内容;目标窗口更高,那竖直方向就显示更多内容;目标窗口更高又更宽,那就先放大,再显示剩余部分的内容。
    [Godot3游戏引擎实践]平台跳跃小游戏(二)-完善游戏世界_第15张图片
    expand

对于移动端的游戏来说,更多是尽可能适应不同宽高比,就算游戏设计固定了高或宽,通常也不会让剩余空间显示黑边。所以尽管我们要制作的是一个横版游戏,Aspect还是选择了expand。同时背景图片也改为了1024x768,这意味着游戏内容显示可以支持到4:3的设备,而宽高比值大于4:3的设备都可以支持,比如16:9、18:9等等,因为作为一个横版游戏,横向的内容是绰绰有余的。

下一篇:[Godot3游戏引擎实践]平台跳跃小游戏(三)-创建游戏的主角

你可能感兴趣的:([Godot3游戏引擎实践]平台跳跃小游戏(二)-完善游戏世界)