一个开箱即用的游戏引擎所做的小 Demo

这里为大家介绍一个本人即兴突兀所作的小玩意,简单的人物移动 demo,控制角色在场景中上下左右移动,时间关系只能介绍完程序部分

使用的游戏引擎是 Godot,脚本语言为 GDScript

gdscript 复制代码
# 当前游戏脚本所继承的父类节点
extends CharacterBody2D

# 人物的移动速度 单位 像素
const _speed = 50.0

# 从外部引入的实例化对象
# Sprite2D 人物模型
@onready var sprite_2d: Sprite2D = $Sprite2D
# AnimationPlayer 人物动画
@onready var animation_player: AnimationPlayer = $AnimationPlayer

# 内置函数,该函数在程序的每一帧被调用
# 例如一秒六十帧,代表一秒内该函数被调用执行六十次
func _physics_process(delta: float) -> void:

	# Input.get_axis(),内置的输入控制函数
	# 其中两个参数,为键盘的映射,left 向左 按 D,right 向右 按 A,下同
	# 执行第一个参数,返回值为 -1,执行第二个参数,返回值为 1,二者都不执行,则为 0
	var direction_x = Input.get_axis("left","right")
	var direction_y = Input.get_axis("up","down")

	# velocity,内置,默认值为 (0, 0),表示向量速度
	# 例如,向左 D,-1 * 200,(-200, 0),人物一秒内延 X 抽反向移动 200 像素单位
	velocity.x = direction_x * _speed
	# 注意,在游戏 2D 中,Y 轴,箭头向下为正,向上为负
	velocity.y = direction_y * _speed

	# is_zero_approx,内置函数,判断参数是否为零
	# 当前判断,人物是否在做水平运动,即向左、向右
	if not is_zero_approx(direction_x):
		# flip_h,内置属性,代表人物的水平方向,
		# 该赋值语句,默认 false,若为 true,则人物模型水平反转
		sprite_2d.flip_h = direction_x < 0
		# 播放走路动画 walk
		animation_player.play("walk")
	# 判断人物是否在做垂直运动,即向上、向下
	elif not is_zero_approx(direction_y):
		animation_player.play("walk")
	# 该分支内,人物未做出移动,故而播放站立动画 idel
	else:
		animation_player.play("idel")

	# 碰撞检测,此处理解为用于更新 velocity 属性
	move_and_slide()

我很意外,掘金貌似不支持该程序脚本语言的高亮,看来 Godot 市场受众确实是十分的小啊,下附编辑器原图

动画位置

www.ixigua.com/73566135952...

Ps:因为掘金视频只支持,目前尚在审核中

上面是程序代码连带着演示,注释写的很清晰,因为很多人并不做游戏这一块,例如我,可以看到,通过很短的程序,可以控制游戏内人物的移动。这里省略了游戏场景的建立、人物模型和动画,因为这些不在本文的讨论中

时间过去了好长,不过也是有所收获的。本来动画想制作成 GIF,尝试发现 Godot可以直接导出视频,赞 get了一个新的知识点

相关推荐
webxin66611 分钟前
汽水music自动看广告领取VIP
程序员·github
梦里寻码42 分钟前
给 AI Agent 搭围栏:Monorepo 是被低估的 Agent 基础设施
前端·后端·github
穆梓兰煊2 小时前
Flutter端云协同推理架构解析
flutter·github
七牛云行业应用3 小时前
DeepSeek Harness 自定义 Skill 教程:从 SKILL.md 到可复用 Agent 工作流
算法·github
逛逛GitHub4 小时前
清华在 GitHub 上开源的 Agent 工作台,最近更新了 2.0 版本。
github
u1301305 小时前
GitHub 热榜项目:日榜(2026-10-14)
人工智能·github
誰能久伴不乏7 小时前
QT工业上位机一次「指令静默丢失」的排查
qt·docker·github
胡大伟7 小时前
麦当劳的开发者大赛:麦当劳 MCP 实测——一个藏在 inputSchema 里的参数
github
大苦根7 小时前
RAG 重排器对比:从 Bi-Encoder 到 Cross-Encoder,以及为什么 bge-reranker-v2-m3 是中文 RAG 的默认答案
github
大苦根7 小时前
RAPTOR 树状检索:从论文到一份能跑的代码,以及它为什么不是银弹
github