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回で扱うのがおすすめです。




ディスカッション
コメント一覧
まだ、コメントがありません