Menu
CoddyTech

控制方向

Coddy Unity 3D 贪吃蛇游戏 课程的第 2 课,共 14 课。

蛇会根据方向键或 WASD 转向。摄像机从棋盘的前沿向下看,因此屏幕上方沿着 +z 方向,也就是 Vector3.forward,屏幕下方则是 Vector3.back。Vector3.up 指向天空:如果蛇头朝这个方向移动,就会升离棋盘。

每按下一次按键只会转向一次,所以要用 wasPressedThisFrame 读取按键。按键只会改变 direction;蛇头仍会在下一次刻度时由 Step() 移动:

Keyboard keyboard = Keyboard.current;
if (keyboard != null && keyboard.dKey.wasPressedThisFrame)
{
    direction = Vector3.right;
}

方向键和对应的字母键是两个按键,用 || 连接。没有键盘的设备上,Keyboard.current 为 null,所以要在开头检查一次。

challenge icon

挑战

简单

用方向键或 WASD 控制蛇的方向。

  1. 将 using UnityEngine.InputSystem; 添加到 Snake 中。
  2. 在 Update() 开头读取 Keyboard.current:按上方向键或 W 键时设置 direction = Vector3.forward,按下方向键或 S 键时设置 Vector3.back,按左方向键或 A 键时设置 Vector3.left,按右方向键或 D 键时设置 Vector3.right。
  3. 保持 Step() 不变:头部会在下一个步进时转向。

点击“开始”,再点击游戏并控制蛇的方向:头部会在下一步时转向。然后点击“检查”。

亲手试试

using UnityEngine;

public class Snake : MonoBehaviour
{
    public float tick = 0.15f;   // 每两步之间的间隔秒数
    private float timer;
    private Vector3 direction = Vector3.right;

    void Update()
    {
        timer += Time.deltaTime;
        if (timer >= tick)
        {
            timer -= tick;
            Step();
        }
    }

    void Step()
    {
        transform.position += direction;
    }
}

Unity 3D 贪吃蛇游戏中的所有课

自己练习: Unity 在线编辑器