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前面加一个下划线
相关推荐
xiezhr2 小时前
米哈游36岁程序员被曝复工当晚猝死出租屋内
游戏·程序员·游戏开发
爱搞虚幻的阿恺4 天前
Niagara粒子系统-超炫酷的闪电特效(加餐 纸牌螺旋上升效果)
游戏·游戏引擎
智算菩萨4 天前
儿童游乐空间的双维建构:室内淘气堡与室外亲子乐园的发展学理、功能分野与协同育人机制研究
游戏·游戏策划
marteker4 天前
房地产市场平台Zillow与《魔兽世界》合作展示游戏内房屋
游戏
wanhengidc4 天前
云手机 打造云端算力
运维·服务器·网络·游戏·智能手机
henry1010104 天前
DeepSeek生成的HTML5小游戏 -- 黑8台球
前端·javascript·css·游戏·html
yuanmenghao5 天前
从零开始:使用 Claude Code 打造字母消除游戏
游戏·glm·claudecode
阿甘编程点滴5 天前
2026年推荐以下5款游戏直播提词器
游戏
PieroPc5 天前
HTML5 Canvas 平台跳跃游戏
前端·游戏·html5
Swift社区5 天前
LeetCode 390 消除游戏 - Swift 题解
leetcode·游戏·swift