UnityUnityの使い方

Unityの使い方⑥ 変数を使ってオブジェクトを動かしてみよう

Unity

1. はじめに

こんにちは!Unityの使い方シリーズ第6回へようこそ!
今回はUnityを使って、変数を使ったオブジェクトの動かし方を学んでいきます。

変数は、ゲームを作るうえでとっても大切な仕組みです。
今回の記事を読めば、Unityで「変数」を使って自分の思い通りにオブジェクトを動かせるようになります!初心者の方でも分かりやすいように手順を細かく説明しているので、一緒に楽しく進めていきましょう!

2. 変数とは?

まずは「変数」について簡単にお話しますね!
変数とは、数字や文字などのデータを一時的に保存しておく箱のようなものです。
ゲームでは、さまざまな情報を管理するために使います。

例えば…

  • スコアを記録する
  • キャラクターの体力を保存する
  • 移動スピードを管理する

このように、変数を使うことで「今の状態」や「特定の値」を簡単に扱えるようになります。


もっと簡単に例えると

変数は「名前の付いた引き出し」だと思ってください。
引き出しに「スピード」という名前を付けておいて、中に「5」という数字を入れます。この引き出しを使えば、あとでスピードを変更したり、動きの速さを調整したりできるようになるんです!


Unityで変数を使う理由

ゲームを作るとき、いちいち数字をコードの中に直接書いていると、変更が大変です。でも、変数を使えばこんな便利なことができます:

  • インスペクターから値を変えられる
  • 数字やデータをひとまとめに管理できる
  • 他のスクリプトと簡単にやり取りができる

Unityでは、スクリプト内で変数を宣言するだけで、こうした便利な仕組みを使うことができます。


それでは、実際にUnityで変数を使ってみましょう。
まずはオブジェクトを用意して、スクリプトを書いてみましょう!




3. 実際にUnityで変数を使ってみよう

それでは、実際にUnityで変数を使ってオブジェクトを動かしてみましょう!ここからは、ステップごとに進めていきますので、画面を見ながら一緒にやってみてくださいね。


ステップ1:シーンの準備

まずはUnityのシーンにオブジェクトを用意します。

  1. キューブを配置する
    • ヒエラルキー(Hierarchy)ウィンドウを右クリックします。
    • メニューから 「3D Object」→「Cube」 を選んで、キューブをシーンに追加しましょう。
    • シーンビューにキューブが現れます!

ステップ2:スクリプトを作成する

次に、変数を使ってキューブを動かすためのスクリプトを作成します。

  1. プロジェクトウィンドウを右クリックします。
    メニューから 「Create」→「C# Script」 を選びます。
    Unity6では「Create」→「Scripting」→「Empty C# Script」
  2. 新しいスクリプトに名前を付けます。
    名前は 「MoveObject」 にしましょう。
  3. スクリプトをダブルクリックして、**エディタ(Visual Studioなど)**で開きます。

ステップ3:スクリプトを編集する

以下のコードをスクリプトに入力します。

using UnityEngine;

public class MoveObject : MonoBehaviour
{
    // オブジェクトの移動速度を管理する変数
    public float speed = 5.0f;

    void Update()
    {
        // 毎フレーム、オブジェクトを右方向に移動させる
        transform.Translate(Vector3.right * speed * Time.deltaTime);
    }
}

コードのポイント解説

  • public float speed
    変数 speed を作成しました。この変数は、キューブの移動速度を管理します。public にすることで、インスペクターで値を調整できるようになります。
  • Update()
    Unityでは、Update メソッドの中に書かれた処理が毎フレーム実行されます。この中に、キューブを動かすコードを書きます。
  • transform.Translate()
    オブジェクトを動かす関数です。Vector3.right は右方向を表し、speed * Time.deltaTime でフレームごとの動きを調整しています。

ステップ4:スクリプトをアタッチする

  1. MoveObjectスクリプトをヒエラルキーのキューブにアタッチします。
    • プロジェクトウィンドウで「MoveObject」スクリプトを選び、キューブにドラッグ&ドロップします。
  2. インスペクターを確認
    キューブを選択すると、インスペクターに「Move Object (Script)」が表示されます。
    • 「Speed」の値が確認できるので、必要に応じて変更してみましょう(例えば10や20にしてみる)。

ステップ5:ゲームを再生して確認

  1. 再生ボタン(Play)をクリック
    ゲームが始まり、キューブが右方向に移動するのを確認しましょう!
  2. スピードを調整してみる
    • 再生中でもインスペクターから「Speed」の値を変えると、移動速度がリアルタイムで変わるのを確認できます。

これで、変数を使ってオブジェクトを動かす基本的な仕組みを理解できたと思います!
次は、このスクリプトをさらにカスタマイズして、キーボードで動かす方法を紹介します!



4. 応用編:キーボード操作でオブジェクトを動かす

ここからは少しステップアップして、キーボードの入力でオブジェクトを動かす方法を学びます!この方法を使えば、プレイヤーが操作できるキャラクターやアイテムを作ることができるようになりますよ。


ステップ1:スクリプトを変更する

前のセクションで作った「MoveObject」スクリプトを編集して、キーボード操作ができるように書き換えます。

以下のコードに変更してください:

using UnityEngine;

public class MoveObject : MonoBehaviour
{
    public float speed = 5.0f; // 移動速度を管理する変数

    void Update()
    {
        // キーボード入力を取得
        float moveX = Input.GetAxis("Horizontal") * speed * Time.deltaTime; // 左右の動き
        float moveZ = Input.GetAxis("Vertical") * speed * Time.deltaTime;   // 前後の動き

        // オブジェクトを移動させる
        transform.Translate(new Vector3(moveX, 0, moveZ));
    }
}

コードの解説

  • Input.GetAxis("Horizontal")
    • 左右のキーボード入力(A/Dキーや矢印キー)を取得します。
    • 値は -1(左方向)~ 1(右方向)です。
  • Input.GetAxis("Vertical")
    • 前後のキーボード入力(W/Sキーや矢印キー)を取得します。
    • 値は -1(後ろ方向)~ 1(前方向)です。
  • new Vector3(moveX, 0, moveZ)
    • 移動量を3D空間の座標(x, y, z)としてまとめています。この例では y0 のままなので、オブジェクトは地面と同じ高さで移動します。
  • Time.deltaTime
    • フレームごとの処理を時間で調整することで、どのデバイスでもスムーズに動くようにしています。

ステップ2:スクリプトをアタッチ

前のステップと同様に、編集したスクリプトをキューブにアタッチしてください。
(すでにアタッチ済みの場合はそのままでOKです!)


ステップ3:ゲームを再生して確認

  1. 再生ボタン(Play)をクリックしてゲームを開始します。
  2. キーボードで操作してみましょう:
    • W / Sキーで前後に移動
    • A / Dキーで左右に移動
    • または、矢印キーでも操作可能です。
  3. キーボードの入力に応じて、キューブが自由に動くのを確認できれば成功です!



5. おわりに

お疲れさまでした!今回の記事では、Unityで「変数」を使ってオブジェクトを動かす方法を学びました。さらに、応用編としてキーボード操作で自由に動かせる仕組みも試してみましたね。

これをマスターすることで、キャラクターやアイテムを操作するゲームの基本的な仕組みを作れるようになりました。今後、この知識を活かして「プレイヤーの体力やスコアを変数で管理する」など、さらにレベルアップした機能を作れるようになります。


この記事で学んだこと
  • 変数の基本的な仕組みと使い方
  • オブジェクトをスクリプトで動かす方法
  • キーボード操作を使ったオブジェクトの制御

Unityのスクリプトは最初は難しく感じるかもしれませんが、一つずつ実践しながら覚えることで、どんどんスキルアップできます!今回の例を応用して、オリジナルのキャラクターを動かしたり、スピードや動きをカスタマイズしたりしてみてくださいね。


もしこの記事が役に立ったら、ぜひ他の記事もチェックしてみてください。Unityを使いこなして、あなたのゲーム制作ライフがもっと楽しく、充実したものになりますように!

Unity初心者でも簡単!アセットを活用してゲーム開発を加速しよう!

Unity Asset Storeには、初心者でもすぐに使える便利なアセットがたくさんあります。
でも「どれを使えばいいの?」「どう活用すればいいの?」と迷っていませんか?

この記事では、初心者向けのおすすめアセットとその活用法を詳しく解説!
ゲーム開発をもっと楽しく、効率的に進めたいなら必見です!




よくある質問 Q&A

Q
変数の値を動的に変更する方法はありますか?
A

インスペクターで変更できます。また、スクリプト内でspeed = 10.0f;のようにコードで設定することもできます。

Q
オブジェクトが動かないのですが、どうしたらいいですか?
A

スクリプトが正しくアタッチされているか確認してください。また、スクリプト内のエラーもチェックしてみましょう。

Q
他のオブジェクトを動かすにはどうすればいいですか?
A

動かしたいオブジェクトにスクリプトをアタッチするか、スクリプトでGameObject.Find()などを使って対象のオブジェクトを指定します。