输入映射,控制移动,GODOT游戏引擎学习笔记(三)

输入及移动

本节教大家如何利用键盘上的按键使图片进行移动

输入映射设置

我们点击左上角的项目→项目设置。最上面选中输入一映射,在此我们可以设置我们需要的按键及对应的功能

在添加新动作这里可以输入按键对应的名称,比如“上”,然后点击右边的添加

添加之后我们点击这个按键右边对应的加号,跳出事件配置框,鼠标点击一下中间可以输入的这一行,这时候按什么键这一行会跳出你键盘上按了对应的键,比如按“W”,这一行会跳出W,这时移动鼠标点击下方的确定,就完成了输入映射配置。这样就配置了“上”这个键对应的按键是“W”

同样的方法我们把“上下左右”对应配置成“WSAD”

添加一个精灵图片

我们在左边Node2D节点下添加一个CharacterBody2D的节点,然后再该节点下再创建一个叫Sprite2D的节点。左下角“文件系统”里有一张创建项目开始自带的图片,我们选中Sprite2D这个节点我们把这张图片拖动到这个2D精灵节点右侧属性栏的“Texture”(贴图)中

这样一张图片就被加到了这个节点中,可以在预览区中显示出来了,同理我们也可以改成别的图片,我们可以拖动他的位置

我们看见左边节点还是显示一个感叹号,因为我们最开始添加的CharacterBody2D这个小人一样的节点还需要一个碰撞区域,我们再添加一个叫CollisionShape2D的节点来给小人加个碰撞区域,添加好后选择右边Shape属性,选个差不多的形状

选好形状之后把弹出来的矩形框缩放大小,放的跟我们的贴图差不多大,然后拖给这个贴图就行

精灵移动

我首先要了解原理,我们在游戏中有一个坐标轴,控制精灵在坐标轴上的位置也就实现了移动,在这个引擎中坐标轴分为横轴和纵轴,横轴右边为正,左边为负。纵轴下面为正,上面为负。

可以在边框上看到具体横纵轴刻度

我们选中CharacterBody2D节点为他添加一个脚本,这里看到多了一个Basic Movement的脚本,这是这个节点默认给的一个移动脚本,这个脚本还带有重力,我们这次的教学不需要重力,所以选择个有基础模版的Default脚本即可

代码及注释如下,按下对应的按键对对应的横纵轴进行加减来实现移动

运行后效果预览

代码部分:

extends CharacterBody2D  # 继承自CharacterBody2D类
const SPEED = 300.0  # 定义角色的移动速度
func _ready():
	pass 
func _physics_process(delta):
	# 处理角色移动
	var direction = Vector2.ZERO  # 定义角色移动方向,默认为零向量	
	if Input.is_action_pressed("左"):  # 检查是否按下左方向键
		direction.x -= 1  # 如果按下左键,将方向向左移动
	if Input.is_action_pressed("右"):  # 检查是否按下右方向键
		direction.x += 1  # 如果按下右键,将方向向右移动
	if Input.is_action_pressed("上"):  # 检查是否按下上方向键
		direction.y -= 1  # 如果按下上键,将方向向上移动
	if Input.is_action_pressed("下"):  # 检查是否按下下方向键
		direction.y += 1  # 如果按下下键,将方向向下移动
	if direction.length() > 0:  # 如果有移动方向
		direction = direction.normalized()  # 将移动方向向量归一化
		velocity = direction * SPEED  # 根据移动方向和速度设置角色速度
	else:
		velocity = Vector2.ZERO  # 如果没有移动方向,将速度设置为零向量
	move_and_slide()  # 使用move_and_slide函数移动角色并处理碰撞

 

小结

        本节先讲了如何进行输入映射,然后讲了如何建立一个2D的精灵节点也就是一个人物节点,给他如何加上碰撞体积,并写入脚本,通过输入控制移动。这里的移动是上下左右的移动,使用于2D俯视角游戏。还有一种加入重力的移动,适用于2D横版过关,类似经典的超级马里奥游戏,这种移动方法会在下期讲,如有不足欢迎大家指出。

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值