Unity体験 第4回 ~キーボードでCubeを動かしてみよう~

広告

はじめに

前回は、プログラムを書いてCubeを自動で動かしました。

今回は、自分でキーボードを使ってCubeを操作してみます。

ゲームでは、プレイヤーの操作に応じてキャラクターが動きます。

今日は、その第一歩を体験してみましょう。


今日の目標

今日は次のことを体験します。

  • 前回のプログラムを書き換える
  • 矢印キーの入力を取得する
  • Cubeを自由に動かす
  • 移動速度を変更する

① 前回のプロジェクトを開こう

前回作成したUnityプロジェクトを開きます。

Hierarchyには

  • Plane
  • Cube
  • Sphere

がある状態にしておきます。


② MoveCube.csを書き換えよう

前回作成した MoveCube.cs を開きます。

今回は、Update()メソッドの内容を書き換えて、矢印キーで動くようにします。

using UnityEngine;
using UnityEngine.InputSystem;

public class MoveCube : MonoBehaviour
{
    [SerializeField]
    float speed = 3.0f;

    void Update()
    {
        Vector3 move = Vector3.zero;

        if (Keyboard.current.leftArrowKey.isPressed)
        {
            move.x = -1;
        }

        if (Keyboard.current.rightArrowKey.isPressed)
        {
            move.x = 1;
        }

        if (Keyboard.current.upArrowKey.isPressed)
        {
            move.z = 1;
        }

        if (Keyboard.current.downArrowKey.isPressed)
        {
            move.z = -1;
        }

        transform.Translate(move * speed * Time.deltaTime);
    }
}

保存したらUnityへ戻ります。


③ Playしてみよう

Playボタンを押してみましょう。

キーボードの矢印キーを押すと、

  • ← 左へ移動
  • → 右へ移動
  • ↑ 前へ移動
  • ↓ 後ろへ移動

するようになります。

前回は自動で動いていましたが、今回は自分で操作できるようになりました。


④ Speedを変えてみよう

次の値を変更してみましょう。

float speed = 3.0f;

例えば

  • 1.0
  • 5.0
  • 10.0

などに変更すると、移動する速さが変わります。

ゲームでは、このような値を調整して遊びやすさを決めています。


⑤ Time.deltaTimeとは?

移動するときに

Time.deltaTime

を掛けています。

これは、パソコンの性能が違っても、ほぼ同じ速さで動くようにするためです。

Unityでは非常によく使われる大切な機能です。


⑥ 壁を作って歩いてみよう

Cubeを複製して壁を作ります。

その間を歩いてみましょう。

壁を自由に配置すると、自分だけの小さなコースが完成します。


Challenge(できる人向け)

時間があれば挑戦してみましょう。

  • 壁を迷路のように配置する
  • Speedを自分好みに調整する
  • スタート地点やゴール地点を作る

完成形は人それぞれ違っていて構いません。


今日のまとめ

今日は初めてキーボード入力を使いました。

今日体験したこと

  • ✅ 前回のプログラムを書き換えた
  • ✅ 矢印キーでCubeを操作した
  • ✅ 移動速度を変更した
  • ✅ Time.deltaTime を使った
  • ✅ 自分だけのコースを作って歩いた

最後に

前回は「プログラムで自動的に動くCube」を作りました。

今回は「自分で操作できるCube」になりました。

ゲームは、このように少しずつ機能を追加しながら作られていきます。

次回は、オブジェクト同士がぶつかったことを判定する「当たり判定」を体験してみましょう。

1点だけ提案

このコードは動きますが、Unityらしい書き方にするなら、次の回で

move.Normalize();

を追加するとよいでしょう。

これにより、斜め移動だけ速くなる現象を防げます。これは「なぜNormalizeが必要なのか」を説明する良い題材にもなるので、第5回で扱うのがおすすめです。

訪問数 23 回, 今日の訪問数 23回

広告

Unity

Posted by hidepon