【Godot】组合键的实现

本文介绍如何在Godot 3.4中实现复杂的组合键输入。通过自定义脚本,能够灵活配置各种按键组合,并在特定组合被按下时触发相应事件。文中详细解释了组合键的判定逻辑与实现代码。

Godot 3.4

组合键,连招时对按键的判定,实现代码。底部有使用的示例文件

关键代码:

#==================================================
#	Componse Input - 组合输入
#==================================================
# * 延迟判断按键是否被按下,防止操作过于快速导致组合键失效
# * 例,按下:小键盘方向键左+空格,则触发操作:
#	add_mapper(
#		"刺" 
#		, ["ui_accept", "ui_left", "ui_right"]	# 包含的组合键
#		, ["ui_accept"]		# 在按下的一刻才被检测到的键
#		, ["ui_left", "ui_right"]	# 其中的一个键被检测到则这个数组内的按钮都算作被检测到
#	)
#==================================================
# @datetime: 2021-12-21 22:50:05
#==================================================

extends Node


# 每个按键组合会在其中一个按键被触发时进行计时器倒计时
# 进行组合件判定,如果到达时间,则会进行释放掉所有已按
# 下的记录,会在此进行发出释放掉的按键,以便可以连接这
# 个信号去执行其他可能的操作 
## @keys  释放掉的key
## @release_all  是否全部释放掉了
## @map_name  释放掉的是哪个组合键
signal released(keys, release_all, map_name)


## 按键映射
var input_mapper : Dictionary = {
   
   }



#=================================<
### 在 Godot实现角色通过左右键围绕矩形路径移动 要实现Godot 中通过左右键控制角色沿矩形路径移动的功能,可以利用 `Path2D` 和 `PathFollow2D` 节点组合完成。以下是具体实现方式: --- #### 1. 创建路径节点 (`Path2D`) 首先,在场景中添加一个 `Path2D` 节点,并为其配置一条闭合的矩形曲线作为路径。 ##### (a)绘制路径 - 添加一个 `Path2D` 节点到场景中。 - 进入编辑模式(点击顶部工具栏中的“编辑曲线”按钮),然后手动绘制一条矩形路径或者导入预设的关键点坐标列表[^1]。 ##### (b)验证路径属性 确保路径是一个闭环结构,这样当角色到达终点时能够无缝返回起点继续运动。 --- #### 2. 添加 PathFollow2D 节点 为了让角色始终位于指定路径上并随时间推进而前进或后退,需在其父级为刚才建立好的 `Path2D` 下面再嵌套放置一个名为 `RockSpawn` 的新实例化对象 —— 即 `PathFollow2D` 节点[^1]。 > 注意:这里我们将此节点重新命名成更语义化的名称如 “PlayerPathFollower”。 --- #### 3. 编写脚本来管理玩家输入与路径交互逻辑 接下来就是核心部分了——编写一段简单的 GDScript 来监听键盘事件从而动态调整 `offset` 参数值进而驱动角色沿着既定轨迹平滑过渡。 ```gdscript extends Node2D # 定义变量 @onready var path_follow := $Path2D/PlayerPathFollower # 获取 PathFollow2D 引用 var speed = 100 # 控制角色环绕速度 (单位:像素/秒) func _process(delta): # 初始化偏移变化量 var offset_change = 0 # 检查左右箭头按键状态 if Input.is_action_pressed("ui_right"): offset_change += speed * delta elif Input.is_action_pressed("ui_left"): offset_change -= speed * delta # 更新 PathFollow2D 的偏移值 path_follow.set_offset(path_follow.get_offset() + offset_change) ``` 上述代码解释如下: - `_process()` 函数会在每一帧被调用; - 根据用户按下左或右方向键的状态分别增减当前 `path_follow` 组件内的 `offset` 属性数值; - 此外还乘上了固定步幅大小(`speed`)及时刻间隔(`delta`)共同决定最终增量幅度。 --- #### 4. 将角色绑定至 PathFollow2D 输出位置 最后一步便是把实际可见的游戏实体关联起来。假设我们已准备了一个 Sprite 图片
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值