godot2D游戏教程系列一(3)

  • 前言:

  • 完成目标

    通过在玩家根节点创建并挂载脚本,完成角色初始化与移动功能的实现。首先在 _ready() 中编写初始化逻辑并通过打印验证脚本正常运行;随后在更新函数中编写移动代码。为保证不同设备下的运行一致性,将 _process 改为固定帧率执行的 _physics_process。 通过项目设置中的"输入映射"配置 WSAD 动作,并在代码中将输入转换为二维速度向量,结合 move_and_slide() 实现玩家在 2D 场景中的平滑移动。同时使用 @export 暴露速度变量,便于在编辑器中直接调整参数。最终实现了基于键盘输入、可调速度、物理帧稳定的玩家移动逻辑。

  • 实现过程:

    • 选中左上角玩家的根节点,然后点击右上角的那个卷轴图标到门口创建脚本
    • 点击会出现这个弹窗
    • 然后呢下方模板选择node:default,也就是节点默认。然后开始撸码,
    • 下方路径选择创建一个新的文件夹Scripts来存放这些代码文件
    • 创建成功之后就是这样子的
    • 在玩家的根节点那里我们会发现右边有一个卷轴图标,表示这个玩家节点目前正在挂载着一串代码,如果我们不想他进行挂载的话,我们可以点击上面的卷轴叉图标
    • 所有关于ready函数里面的代码会在游戏开始运行的时候被执行,就是相当于初始化
    • 让我们把原本的pass删掉,然后写一个打印,然后点开始运行游戏,这样子在下方的终端就会显示打印的信息
    • 按键盘的f8就可以直接退出游戏
    • process函数里面的代码会在游戏的每一帧被执行一遍,如果游戏的帧率是60的话,那么这个函数里面的代码每秒会执行60次,相当于循环执行
    • 来设置玩家移动

      • velocity是速度,然后用二维向量来设置玩家在2d平面上的移动速度,里面的2个参数分别是x轴的移动速度和y轴的移动速度,比如说这里是玩家在x轴的移动速度是50,y轴的移动速度是0.这里设置好属性之后,我们需要进行执行移动
      • 在我们在process的函数中加入move_and_slide(),这样子我们的玩家就会根据我们上面的设置进行移动
      • 如果想看官方文档,只需要选中函数之后按CTRL就可以自动跳转了
    • 通过操作键盘wsad进行移动玩家

      • 让我们点击编辑器的左上角的项目点击项目设置
      • 玩家的每一个输入信号在godot都被称之为动作action
      • 让我们找输入映射这一块,添加新动作,把right,up,down,left添加进去
      • 我们还需要加一下分配动作对应键盘的键位
      • 选中动作之后,点击右边的加号
      • 然后就会弹出这个事件配置,这个时候godot是在进行监听我们键盘的输入
      • 所以这个时候我们只需要在键盘上按一下a键,就会自动显示出a
      • 然后我们点击确定就好,这样子就会显示出来我们绑定的键位
      • 接下来我们需要在编辑器上实时的检测玩家在wsad键盘上的输入转化为游戏里面玩家角色的移动这样子就可以根据玩家的操作进行移动了,但是默认的是每次只有移动一个像素,所以我们还需要加一个速度值的变量(方便进行修改,变化)
      • 我们声明一个变量之后呢,给一个默认的值
      • 这样子我们玩家角色的移动速度就会快不少,而且还是根据玩家键盘的输入进行控制移动
      • 另外为了方便调整变量的数值而不是在代码里面进行修改,我们可以在变量面前加一个@export,这样子就可以在右边的监视器上进行快捷的调整数值,这里注意就是这里的修改不会同步到代码里面中,而是优先级更高,自动覆盖掉代码里面的设置的数值
    • 这里做代码修改,因为_process函数是每一帧会运行一次,但是有些电脑是每秒100帧、120帧等等,会计算很多次,所以我们需要把这个函数改为_physics_process,这个函数是以固定的时间间隔进行运行的,而官方编辑器默认的时间间隔是1秒60帧
    • 另外如果在代码运行后无法移动并且报错这个"delta"的错误的时候
    • 就需要再delta前面加一个下划线
相关推荐
向前V2 小时前
Flutter for OpenHarmony数独游戏App实战:单元格交互与选中
flutter·游戏·交互
Remember_9932 小时前
【数据结构】初识 Java 集合框架:概念、价值与底层原理
java·c语言·开发语言·数据结构·c++·算法·游戏
云边散步3 小时前
godot2D游戏教程系列一(4)
游戏
2501_944525763 小时前
Flutter for OpenHarmony数独游戏App实战:笔记功能
笔记·flutter·游戏
葵花楹14 小时前
【JAVA课设】【游戏社交系统】
java·开发语言·游戏
java修仙传1 天前
力扣hot100:跳跃游戏
算法·leetcode·游戏
hoiii1871 天前
C# 俄罗斯方块游戏
开发语言·游戏·c#
玉梅小洋1 天前
《游戏设计艺术(第三版)》第一章——锚定设计初心:成为游戏设计师的起点
笔记·游戏·个人开发·游戏策划
@CLoudbays_Martin111 天前
SDK游戏盾的工作原理具体是怎么完成防护的?
服务器·网络·安全·游戏