【Godot 4.2.1】为人物添加状态机
JessPig Lv1

状态机介绍

状态机是用来控制游戏状态切换的一种设计,比如说游戏人物的行为状态切换:walk -> run -> idle ...

通常情况下在给角色设计行为时都是在 character.gd 文件中通过大量的 if...else... 进行实现,但这样的实现会导致代码结构过于复杂,所以这时候就需要通过状态机来优化代码结构

实现状态机的几种方式

枚举实现

这是一种比较常见且实现起来简单的方式,就是通过枚举方式实现

首先通过枚举定义状态和定义一个用来保存当前状态的变量,再定义对应状态的方法,然后再进行选择状态操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
enum STATE_MACHINE {
IDLE,
WALK
...
}

var current_state := STATE_MACHINE.IDLE

func idle() -> void:
...

func ...

func _process(delta: float) -> void:
match current_state:
STATE_MACHINE.IDLE:
...
...

通过 AnimationTree 实现

这种实现方式是官方文档 Godot Engine 4.x 简体中文文档 | 使用 AnimationTree 中提到的,这种实现,这种方式要更加简单,大部分操作都可以直接通过 Godot 引擎的 GUI 方式实现,但还是需要一部分的代码操作,比如切换的时机

 评论
评论插件加载失败
正在加载评论插件
由 Hexo 驱动 & 主题 Keep
本站由 提供部署服务
总字数 313 访客数 访问量