一个开箱即用的游戏引擎所做的小 Demo
这里为大家介绍一个本人即兴突兀所作的小玩意,简单的人物移动 demo,控制角色在场景中上下左右移动,时间关系只能介绍完程序部分
使用的游戏引擎是 Godot,脚本语言为 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()
动画位置
上面是程序代码连带着演示,注释写的很清晰,因为很多人并不做游戏这一块,例如我,可以看到,通过很短的程序,可以控制游戏内人物的移动。这里省略了游戏场景的建立、人物模型和动画,因为这些不在本文的讨论中
时间过去了好长,不过也是有所收获的。本来动画想制作成 GIF,尝试发现 Godot可以直接导出视频,赞 get了一个新的知识点
转载自:https://juejin.cn/post/7356446170476265513