本网站是本人的个人博客网站海外站,国内网站为https://suyihang15.com,本网站主要面对海外用户

使用Godot的一些心得(开始)

注:这差不多是本人正式接触的第一款游戏引擎,所以就只是说说自己的看法

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编写代码,后续我再看一下,会介绍更多功能的

基本上上面的三个语法就可以实现游戏的一些基础功能了。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

阿里云云服务器ECS - 特惠选购

精选服务器规格

入门服务器

入门型实例

适合个人博客、小型网站、学习测试,2核2G,带宽可选。
¥99.00 /年起
查看详情
企业基础服务器

企业基础实例

4核8G配置,中小型业务、商城、小程序后端,稳定高性能。
¥399.00 /年起
查看详情
高性能服务器

高性能计算实例

高CPU大内存,数据库、高并发业务场景,支撑业务高峰期。
¥899.00 /年起
查看详情

产品核心优势

⇄

弹性伸缩

随时升降配置,业务涨降灵活调整,避免资源浪费

🛡

安全防护

DDoS基础防护,防火墙,保障服务器业务安全

✓

高可用稳定

多可用区,高服务可用性,降低故障风险

⚙

简单运维

控制台可视化操作,支持Windows/Linux多种系统