使用Godot制作第一个2D游戏 01
使用Godot制作第一个2D游戏 01
本教程文档依据码客二十二的Godot教程视频进行整理,相关代码以及项目素材请到原视频下方寻找。
下载
Godot支持两种编程语言
- GD Script(Godot脚本语言)
- C#(Unity)
在下载页面可以找到两个版本,.NET版本额外支持C#编程(普通版只支持GD Script)。
如有需求的话(遇到兼容问题),在previous version中可以找到Godot3以及更早的版本。
新建项目
启动Godot,出现项目管理器页面,可以在右上角设置中切换中文语言。
点击左上角创建按钮创建新项目,设置项目名、项目路径。
完成创建后进入Godot项目菜单。
导入素材
左下角的窗口是项目的文件系统(资源管理器),存放游戏项目中的美术、音频、代码等文件。
直接将要导入的素材(AssetBundle)拖动到文件系统窗口中,即可将素材导入到Godot引擎中。
- AssetBundle素材包
- Audio 音频
- Sprites 图片
- .ttf 字体
点击右上角的按钮可以更改文件系统中文件的显示模式,修改成自己习惯的即可。
点击文件系统里双击文件可以对其进行预览。
编辑器UI
制作2D游戏,首先将编辑器窗口改为2D视角。
界面中间的窗口是观察窗。
- 拖动:按住空格+按住鼠标左键 or 按住鼠标中键(滚轮)
- 缩放:滚动鼠标滚轮
场景和节点
游戏场景(所有都游戏元素如角色、道具、背景、音效,都要放在游戏场景中。场景中的这些元素被称为节点(子节点 Node),有的节点显示图像,有的节点播放音频,子节点也可以拥有自己的子节点。同时场景本身也是一个节点(根节点 Root Node)。由一个场景根节点和众多元素子节点组成场景树,如下图所示。
点击场景窗口中的2D场景创建2D根节点。
首先向根节点中添加一个背景子节点。点击场景窗口左上角的加号(或快捷键ctrl+A),添加一个Sprite2D节点,Sprite节点被叫作图像节点或精灵节点,可以用来显示图片。
选中创建的Sprite2D节点,在右侧的检查器中会显示该节点的各项属性,初始纹理属性(Texture)为空,在文件系统中找到森林背景图资源(ForestBackground.png),拖动到Texture属性上赋予其纹理。
放大背景资源图片,发现此类像素图片的显示比较模糊,将左上角项目-项目设置-渲染-纹理-画布纹理-默认纹理过滤选项修改为Nearest,这种渲染方式更适合像素图的展示。
点击观察窗左上角的移动按钮(或快捷键W)切换到移动模式,此时可以移动场景中的背景图片,使用按住Shift再进行拖动则只能在水平或垂直方向上移动图片。ctrl+Z可以撤销操作。
在场景窗口中,将显示背景图片的Sprite2D节点复制一份(快捷操作:选中节点然后ctrl+D),然后将两个节点分别命名为Background1和Background2,分别选中两个节点并将其分别移动到窗口y轴的两侧,组成游戏的背景。
将当前场景进行保存,ctrl+S唤出保存页面,将当前场景命名为Game.tscn,项目资源目录中新建一个场景文件夹Scenes用来专门保存场景文件。
保存完成后,在文件系统窗口中新建的Scenes文件夹下可以找到保存的游戏场景。
此时可以将当前游戏场景关闭,并双击Game.tscn场景文件,可以看到场景窗口和观察窗口中又重新唤出了我们刚才创建的节点和背景图展示。
点击编辑器右上方三角按钮试着运行游戏(快捷键F5),由于未定义主场景,选择当前场景运行。此时游戏画面中只显示了背景的一个角。
因为在2D游戏中,Godot默认渲染右下角蓝色框内的元素,这就是为什么只能看到背景的一个角。需要添加一个相机节点(Camera)将背景渲染在游戏窗口正中央。
向场景树中添加Camera2D节点,在观察窗中发现出现了紫色边框,表示新添加的Camera节点的渲染范围。在检查器窗口中调整Camera节点的Zoom属性来调整相机的渲染范围,然后再次启动游戏场景测试。
当场景中的节点较多时容易误操作其他节点,可以将暂时不需要修改的节点锁定(观察窗上方的锁按钮或快捷键ctrl+shift+L),进而防止在拖动其他节点时误触这些节点。
玩家场景
完成背景场景的创建,接下来继续添加玩家。玩家也可以通过节点的方式直接添加到背景场景中(当前的Node2D根节点下),但通常是将玩家保存为一个独立的玩家场景,再在背景场景中调用玩家场景。其原因是,依据面向对象的原则,玩家这种元素会多次出现在不同的场景中,将玩家保存为一个独立场景的好处是,当我们需要修改玩家的某项属性时(如生命值上限、基础速度等),只需在玩家场景中进行修改,其他调用玩家场景的场景就会自动对修改做出反应,而不需要我们对每个场景中的玩家元素进行修改了。
点击观察窗上方的加号创建一个新场景,在新场景中创建一个CharacterBody2D节点作为玩家场景的根节点。该节点的一些属性使其可以在2D游戏场景中模拟玩家的移动和物理碰撞,适合作为玩家节点存在。为了与其他场景进行区分,可以将该节点重命名为Player。
向玩家场景中添加玩家图片节点,这次添加一个Animated Sprite 2D节点(2D动画节点,相较于普通的图片节点可以使图片动起来,动画的本质是将多帧连续的图像快速播放)。选中Animated Sprite 2D节点,在检查器中找到Sprite Frames属性,选择新建SpriteFrames。
在下方出现的动画窗口中(如果没出现,点击一下Sprite Frames属性中刚刚新建的SpriteFrames)选择网格状按钮(快捷键ctrl+shift+O)为玩家添加动画帧。
找到游戏资源中的玩家图片包。在游戏中角色动画一般被存放在一种叫SpriteSheet的图片表中,图片表会保存玩家每一帧下的不同动作。调整右上角的参数将该图片表水平分为6份,垂直分为12份,来让Godot自动切割这张图片表获取每一帧的独立图片。一次选中第一行的四张图片,这四帧是玩家角色的待机动画,将其添加到节点中。
点击动画帧窗口中的一系列按钮预览角色动画,同时也可以对动画播放的速度(帧率)进行调整,修改动画的名称为idle(待机动画)便于之后区分,最后开启自动播放,这样在游戏一开始时玩家的角色才会自动播放待机动画。
完成以上操作后保存玩家场景(Player.tscn),然后回到主场景(背景场景Game.tscn)中,将玩家场景添加进背景场景。点击场景窗口左上角的链接按钮,将玩家场景实例化为背景场景中的一个子节点。
现在玩家已经作为一个子节点添加到了游戏场景中,按下F5启动游戏查看效果,可以看到玩家的待机动画已经可以正常播放了(如果玩家没有动可能是在添加动画帧时没有开启自动播放)。