游戏编程 - Godot引擎中控制移动的几种方式

Godot引擎中控制移动的几种方式

游戏编程 - Godot引擎中控制移动的几种方式_第1张图片

1。我们要讲什么?

本篇我们要梳理一下游戏中常见的几种角色移动的控制方式,比如:
使用键盘手柄

  • 八个方向移动
  • 旋转(左右键控制) + 移动(上下键控制)

使用鼠标

  • 自由移动(点击位置)
  • 旋转(始终朝向鼠标) + 移动(上下键控制)

2。准备一个简单的演示

本篇为了聚焦我们要研究的问题,我们不再给角色加入动画等其它效果,仅使用godot引擎的图标作为精灵,之后的一切控制演示都由它承担。
游戏编程 - Godot引擎中控制移动的几种方式_第2张图片

  • 首先建立一个以KinematicBody2D为载体的精灵,其包含的节点和层级关系如上图。
  • KinematicBody2D是一个运动学性质的节点。(在另一篇文章里会详细说)
  • Sprite是一个精灵节点,把godot的图标(icon.png)拖到它的Texture属性上。
  • CollisionShape2D是一个碰撞检测盒,我们给了它一个矩形形状。本篇文章中可以不使用。(加上是为了消除警告)
  • 给KinematicBody2D节点附加一个脚本。(选中此节点,然后点击右上角的在这里插入图片描述
    图标)
  • 最后我们可以看到如下效果,因为精灵默认处于(0,0)处,所以会展示在窗口的角落。因为我们脚本里什么都没做,所以图标也只是静静的躺在那里。
    游戏编程 - Godot引擎中控制移动的几种方式_第3张图片

3。配置输入映射(Input Map)

输入映射可以理解成什么东西呢?它相当于提前把我们可能按的键,比如键盘的W A S D、手柄的某个键或鼠标的某个键绑定到一个字符串,而godot提供了一个方便的函数,我们只要把我们绑定的字符串提供给这个函数,根据返回值真假(true or false)就可以知道与这个字符串绑定的的键是否被按下。

  • 找到配置的对话框:Project -> Project Settings… -> Input Map选项卡
    游戏编程 - Godot引擎中控制移动的几种方式_第4张图片
  • 从上面的图中可以知道,我们配置了5个映射关系:
    游戏编程 - Godot引擎中控制移动的几种方式_第5张图片
  • 好,现在如果我们要检测上、下、左、右键是否有按下,我们可能写出这样的代码:
func get_input():
    ...
    if Input.is_action_pressed('move_right'):
        velocity.x += 1
    if Input.is_action_pressed('move_left'):
        velocity.x -= 1
    if Input.is_action_pressed('move_down'):
        velocity.y += 1
    if Input.is_action_pressed('move_up'):
        velocity.y -= 1
    ...
  • 下面是输入映射的基本操作:在Action文本框中输入你想绑定的字符串名字,一般是提示性的(比如:move_left、attack等等);点击Add按钮后,你要绑定的字符串会出现在下面的列表里;最后在你的字符串右边,点击"+"号来添加你要将哪些键映射到这个字符串。
    游戏编程 - Godot引擎中控制移动的几种方式_第6张图片
  • 能不能对godot所有支持的键做一个基本的介绍,比如:
    游戏编程 - Godot引擎中控制移动的几种方式_第7张图片
  • 其中Joy Axis(轴)的标记会

你可能感兴趣的:(Godot游戏编程基础,游戏编程,godot引擎,移动控制,游戏基础,控制方式)