注:这差不多是本人正式接触的第一款游戏引擎,所以就只是说说自己的看法
1、为什么选择Godot
之前我也玩过unity,但是这款引擎是朋友推荐的,尝试了一下,发现确实还是比较好上手的,而且其本身是开源的,所以不用担心商业付费什么的。
2、使用
(1)首先,下载Godot,一般下载最新版就行
然后创建一个新项目,看你自己看把文件创建在哪里(一般不推荐c盘),然后其他的默认选择好就行

创建好以后就是这个样子

(2)我们先一步一步来看,介绍
这是一个3D场景,一般我们是以2D开始,点击好中间的2D

这就是我们要操作的主界面,然后点击2D场景,我们就可以创建我们的第一个游戏场景了
我们一般命名为First_Scene
(3)然后介绍一下各个板块
左上角:这个是我们用于创建场景和节点(节点按照我的理解就是,人身上的关节,分母和子节点,母节点的设置,会影响到子节点,这个是我们用于实现游戏一些动作活动的关键)
左下角:这个是我们的资产,我认为很方便的一点就是,我们可以通过拖动来直观的看到我们资产(就是美术啊和音效这类资产)
中间:这一板块就是我们启动游戏后可以看到的界面,当然要注意的是,他是有一个框线的,在这个框线里的才是玩家看到的东西,你可以设置多个场景来实现关卡的切换,或者通过代码来移动背景实现场景的切换,我能想到的就是这两种了
右边:当你选中你所放在这个场景里的资产,就可以对其大小位置,进行详细的拖动,当然我们也可以手动用鼠标操作,但是效果肯定没有调右边的参数好。

如图,当我把这个场景设置为第一场景以后,点击最右上角的启动图标以后就可以看到这个场景了。
(4)代码编写
好,当我们创建好这个场景以后,他是静止的一幅画,那么我们就要让他有一段运行逻辑就是代码让他动起来
选择好这个角色,然后点击左上角的创建脚本文件,位置一般选择默认

点击以后,我们可以看到,其已经有了一些代码

好我们来一一解释
extends Sprite2D
这个脚本是用来控制一张图片的,必须挂在图片节点上,你可以理解为开头必写吧
#这个是注释,相信有点编程基础的都知道吧
func _函数(要调用函数就必须加上func _这个是和其他的编程的区别吧)
_ready() :图片刚出现在游戏里,只跑一次。
_pass :空的,结束吧
_process(delta) :游戏运行时,不停重复跑(每秒几十次)。
delta :两次画面刷新间隔的时间,做移动要用。
当然这些都是基础,毕竟一些内置的基础函数还是要知道含义的
然后一个技巧就是,我们可以直接通过拖动左上角上面的素材来实现控制该物体,就不用自己命名了
(5)介绍几个基础的功能吧
1、实现旋转
extends Sprite2D
@export var rotate_speed = 120.0
func _process(delta):
选择的物体的命名.rotation_degrees -= rotate_speed * delta
很好理解吧
extends Sprite2D
脚本挂Sprite2D图片物体。
@export var rotate_speed = 120.0
导出变量,右边检查器面板可以直接改旋转速度,120就是每秒转120度。
func _process(delta):
每一帧循环运行。
选择的物体的命名.rotation_degrees -= rotate_speed * delta
rotation_degrees :物体旋转角度(角度制)
-= :逆时针向左转;改成 += 就是顺时针向右转
* delta :保证不管游戏帧率高低,旋转速度稳定。
2、左右移动
extends Sprite2D
@export var move_speed = 250.0
func _process(delta):
var dir_x = 0
if Input.is_action_pressed(“move_left”):
dir_x = -1
if Input.is_action_pressed(“move_right”):
dir_x = 1
选择的物体.position.x += dir_x * move_speed * delta
3、碰到界面边界回弹
extends CharacterBody2D
@export var move_speed = 250.0
@export var bounce_power = 180.0
func _physics_process(delta):
var dir_x = 0
if Input.is_action_pressed(“move_left”):
dir_x = -1
if Input.is_action_pressed(“move_right”):
dir_x = 1
velocity.x = dir_x * move_speed
if move_and_slide():
velocity.x = -velocity.x * bounce_power / move_speed
大致我想到的实现逻辑就是这样,还有上面是没有缩进的,当然你也可以自己设计,一套逻辑,反正能实我所说的功能就行。
具体的实现代码看这个官方文档
介绍 — Godot Engine (4.x) 简体中文文档
当然,我认为如果你有一定的代码基础上手还是很快的,毕竟我感觉我自己还是能理解一些基础函数的,而且我并没有系统的去学过,实在不会可以试试ai编写代码,后续我再看一下,会介绍更多功能的
基本上上面的三个语法就可以实现游戏的一些基础功能了。