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. 最后点击下图按钮完成下载(注意导入前需解压缩)
    下载

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ForBigData

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

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

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

打赏作者

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

抵扣说明:

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

余额充值