Godot4.3类星露谷游戏开发之【实现玩家移动】

千里之行,始于足下

零、 笔记

本章实现最简玩家移动功能,非状态机。

一、控制玩家移动

第一步,点击如图标签,将玩家 空闲_前 动画设为默认播放;

空闲_前动画设为默认
请添加图片描述
第二步,为玩家节点附加 脚本 ,脚本名默认为 玩家1.gd

在这里插入图片描述
第三步,在 项目->输入映射 中,为上,下,左,右起名;

上,下,左,右
绑定W,S,A,D1
第四步,绑定键盘键位,点击 【+】 ,为上,下,左,右分别绑定W,S,A,D;

绑定W,S,A,D2
绑定后,在脚本中使用上,下,左,右时,Godot即可知晓表示的是W,S,A,D四个键位。

第五步,为 玩家1 节点编写移动脚本;

extends CharacterBody2D

const 速度 : float = 80.0


func _physics_process(delta: float) -> void:
	# 获取键盘输入方向
	var 向量 = Input.get_vector("左", "右", "上", "下")
	
	# 计算玩家速度(矢量)
	velocity = 速度 * 向量
	
	# 移动
	move_and_slide()

第六步,将玩家加入 测试_基本地形 场景,观察玩家移动;

存在多种加入测试_基本地形场景的方式:

  1. 从文件系统将 玩家1.tscn 直接拖入 测试_基本地形 场景的场景面板。

  2. 从文件系统将 玩家1.tscn 直接拖入 2D 面板。

  3. 点击 测试_基本地形 场景的场景选项卡下的 链接 标签,搜索 玩家1 节点后加入。

添加玩家1节点
为了确保场景运行时,玩家处于游戏窗口中心,还应添加相机节点 Camera2D 作为玩家的 子节点

创建Camera2D作为玩家1子节点
创建Camera2D
第七步,点击编辑器右上角 【运行当前场景】 按钮进行测试;

运行当前场景
键盘输入W,S,A,D测试:1.默认为 空闲_前 动画正确,2.角色受 键盘控制 正确;

测试

二、播放玩家动画

现在开始要为玩家绑定空闲动画与行走动画;
逻辑如下:

x>0
x<0
y>0
y<0
x>0
x<0
y>0
y<0
_physics_process
获取输入向量
向量是否为零?
播放空闲动画
播放行走动画
判断方向
行走_右
行走_左
行走_前
行走_后
最后方向
空闲_右
空闲_左
空闲_前
空闲_后
设置速度
move_and_slide

下面为 玩家1.gd 脚本具体实现;

extends CharacterBody2D

const 速度 = 80.0

var 玩家方向 : Vector2

@onready var animated_sprite_2d: AnimatedSprite2D = $AnimatedSprite2D


func _physics_process(delta: float) -> void:
	var 向量 = Input.get_vector("左", "右", "上", "下")
	
	# 有输入的时候就播放行走动画
	if 向量 != Vector2.ZERO:
		# 这里区分上下左右各播放什么动画
		if 向量.x > 0:
			animated_sprite_2d.play("行走_右")
		elif 向量.x < 0:
			animated_sprite_2d.play("行走_左")
		elif 向量.y > 0:
			animated_sprite_2d.play("行走_前")
		elif 向量.y < 0:
			animated_sprite_2d.play("行走_后")
		
		# 记录玩家停止前的朝向
		玩家方向 = 向量
		
	# 没有输入的时候就播放空闲动画
	else:
		if 玩家方向.x > 0:
			animated_sprite_2d.play("空闲_右")
		elif 玩家方向.x < 0:
			animated_sprite_2d.play("空闲_左")
		elif 玩家方向.y > 0:
			animated_sprite_2d.play("空闲_前")
		elif 玩家方向.y < 0:
			animated_sprite_2d.play("空闲_后")
			
	velocity = 速度 * 向量

	move_and_slide()
	

三、成品展示

成品如下:

成品展示

四、免费开源资产包

某开源网站精灵图资源包链接: 点击此处

  1. 进入链接后点击下图按钮
    下载

  2. 然后点击【No thanks,just take me to the downloads】(不了谢谢,只想下载)
    No thanks,just take me to the downloads

  3. 最后点击下图按钮完成下载(注意导入前需解压缩)
    下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ForBigData

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值