UnityUnityメモ

Unity初心者必見!クリックで動きを一時停止&再開する方法

Unity

1. はじめに

この記事では、Unity初心者の方でも簡単に作れる、クリック操作でCubeオブジェクトを一時停止・再開させる仕組みの作り方を紹介します。この方法を学べば、Unityでの基本的なスクリプト作成やオブジェクトの動きの制御方法が理解できるようになります!

Unityでは、オブジェクトを動かしたり停止させたりといったインタラクティブな操作を簡単に作り込むことができます。今回は、Cubeが左右に動き続ける仕組みを作り、クリックによってその動きを停止したり再開したりする機能を追加します。

「どうやってオブジェクトを動かすの?」「クリック操作ってどうやるの?」という疑問が解消される内容になっていますので、ぜひ一緒に進めてみてください!初心者の方でも安心して取り組めるよう、丁寧に解説していきますよ!

Unityを触ったことがないという方はコチラの記事から見てみてください!



2. Cubeオブジェクトの作成

それではまず、動かしたいCubeオブジェクトを作成しましょう。以下の手順に沿って進めてください。


Cubeオブジェクトを作成する手順

  1. Unityエディターを開きます
    プロジェクトを新規作成、もしくは既存のプロジェクトを開いてください。
  2. ヒエラルキー(Hierarchy)ウィンドウで右クリック
    ヒエラルキーウィンドウとは、シーン内に配置されたオブジェクトを一覧で表示している場所のことです。このウィンドウ上で右クリックしてください。
  3. 「3D Object」→「Cube」を選択
    右クリックメニューが開いたら、3D Objectを選び、さらにその中のCubeをクリックします。すると、シーンにCubeが追加されます。
  4. Cubeを選択して名前を確認
    ヒエラルキーウィンドウに追加されたCubeオブジェクトをクリックして選択します。名前はデフォルトで「Cube」になっているはずですが、必要に応じて「MovingCube」など分かりやすい名前に変更してもOKです。

Cubeの初期配置を調整

  1. インスペクター(Inspector)ウィンドウを開く
    Cubeを選択すると、右側のインスペクターウィンドウにそのオブジェクトの詳細情報が表示されます。
  2. 位置(Transform)を確認・調整
    初期の位置がシーン中央に設定されているかを確認します。TransformコンポーネントのPositionX: 0, Y: 0, Z: 0になっている場合、中央に配置されています。必要に応じて数値を変更してください。
  3. サイズや回転の調整(必要なら)
    Scaleの値を変更してCubeの大きさを変えたり、Rotationを調整して回転させたりできます。ただし、この記事ではデフォルトのままで進めることをおすすめします。

これでCubeオブジェクトが作成されました!
次のステップでは、このCubeを動かすためのスクリプトを作成していきます。準備はOKですか?それでは進んでいきましょう!



3. スクリプトの作成

次に、Cubeの動きを制御するためのスクリプトを作成します。このスクリプトで、クリック操作による一時停止と再開の仕組みを実現します。初心者でも簡単にできるので、安心してください!

手順1: C#スクリプトの作成

  1. Unityエディターの「プロジェクト(Project)」ウィンドウを開きます。
    ※「Project」ウィンドウが見つからない場合は、画面上部のメニューから「Window」→「General」→「Project」を選んで表示させましょう。
  2. プロジェクトウィンドウの空白部分を右クリックします。
  3. メニューから「Create」→「C# Script」を選択します。
  4. スクリプトの名前を「StopMove」と入力して確定します。

これで、新しいスクリプト「StopMove」が作成されました!


手順2: スクリプトを編集する

  1. 作成した「StopMove」スクリプトをダブルクリックします。
    デフォルトのコードエディター(通常はVisual Studio)が開きます。
  2. 以下のコードをコピーペーストしてください。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class StopMove : MonoBehaviour
{
    private float count;
    private float move = 0.1f;
    public bool isStop;

    void Start()
    {
        isStop = false;
    }

    void Update()
    {
        if (Input.GetMouseButtonDown(0) && !isStop)
        {
            isStop = true;
        }
        else if (Input.GetMouseButtonDown(0) && isStop)
        {
            isStop = false;
        }

        if (isStop)
        {
            Time.timeScale = 0f;
        }
        else if (!isStop)
        {
            Vector3 position = new Vector3(move, 0, 0);
            transform.Translate(position);
            count++;

            if (count == 100)
            {
                count = 0;
                move *= -1;
            }
            Time.timeScale = 1f;
        }
    }
}
  • コードを保存します。(Windowsの場合はCtrl + S、Macの場合はCmd + S

コードの解説

  • isStop
    Cubeが停止中かどうかを管理するフラグです。trueで停止、falseで動作します。
  • Input.GetMouseButtonDown(0)
    マウスの左クリックを検知します。
  • Time.timeScale
    ゲーム全体の動きを制御するためのプロパティです。0に設定すると停止し、1に設定すると再開します。
  • Transform.Translate
    Cubeを左右に動かすメソッドです。

これでスクリプトの準備は完了です!次は、このスクリプトをCubeオブジェクトにアタッチして、動作確認を行いましょう!



4. スクリプトをCubeにアタッチ

ここでは、作成した「StopMove」スクリプトをCubeオブジェクトにアタッチする方法を説明します。この手順をしっかり確認して、スクリプトを適切に適用しましょう。


手順1: Cubeを選択する

Unityエディター内で、ヒエラルキー(Hierarchy)ウィンドウから「Cube」オブジェクトをクリックして選択します。


手順2: プロジェクトウィンドウからスクリプトを確認する

作成した「StopMove」スクリプトが、プロジェクト(Project)ウィンドウに表示されていることを確認してください。スクリプトが見当たらない場合は、もう一度「Create」→「C# Script」でスクリプトを作成してください。


手順3: スクリプトをCubeにアタッチ

  1. ドラッグ&ドロップでスクリプトをアタッチします。
    • プロジェクトウィンドウ内の「StopMove」スクリプトをクリックして選択。
    • そのままドラッグして、ヒエラルキーウィンドウの「Cube」にドロップします。
  2. スクリプトをアタッチしたCubeオブジェクトを選択すると、インスペクター(Inspector)ウィンドウに「StopMove」スクリプトが表示されていることを確認できます。

スクリプトのアタッチが正しくできると、Cubeが期待どおりに動作するはずです!



5. 動作確認

Cubeの動きとクリック操作が正しく機能しているかを確認しましょう。以下の手順に沿って、Unityエディターで動作テストを行います。


ステップ1: ゲームを実行

  1. Unityエディター上部にある「再生ボタン(▶)」をクリックします。
    • このボタンをクリックすると、Unityのゲームプレイモードが開始されます。

ステップ2: Cubeの動きを確認

  1. ゲームプレイモードで、Cubeが左右に動いていることを確認してください。
    • Cubeは自動的に左右に移動を繰り返すようになっているはずです。

ステップ3: クリック操作を確認

  1. 画面をクリックしてみましょう。
    • Cubeの動きが一時停止することを確認してください。
  2. 再度画面をクリックします。
    • Cubeの動きが再開することを確認してください。

ステップ4: 不具合がある場合の確認ポイント

  • スクリプトのアタッチミス
    • 作成した「StopMove」スクリプトがCubeオブジェクトに正しくアタッチされているか確認してください。
    • アタッチされていない場合、Cubeを選択し、スクリプトをドラッグ&ドロップして再アタッチします。
  • スクリプトのエラー
    • コードにタイポ(入力ミス)があると動作しません。スクリプトを開いて、コードをもう一度確認してください。
  • Cubeの位置やサイズ
    • Cubeがシーン内に見えない場合、Cubeの位置やサイズを確認してください。

ステップ5: 動作が確認できたら

  • ゲームプレイモードを終了するには、再生ボタン(▶)をもう一度クリックします。
    • 再生中に変更された内容は保存されないため、必要な設定変更は再生モードを終了してから行ってください。

これで「Cubeの動作確認」は完了です!もし問題が発生した場合は、よくある質問(Q&A)セクションも参考にしてくださいね。 😊



6. 応用:他のオブジェクトに適用する方法

今回作成した「StopMove」スクリプトは、Cubeだけでなく他の3Dオブジェクトにも簡単に適用できます。同じ動作(左右に動いて、クリックで一時停止と再開)をさせたい場合は、以下の手順で設定を行いましょう。


1. 新しいオブジェクトを作成する

ヒエラルキー(Hierarchy)ウィンドウで、Cube以外の3Dオブジェクトを作成します。例えば:

  • 右クリック → 「3D Object」 → 「Sphere」で球体を作成。
  • 右クリック → 「3D Object」 → 「Capsule」でカプセルを作成。

これで、Cube以外のオブジェクトがシーンに追加されます。


2. スクリプトをアタッチする

作成したオブジェクトに、先ほどの「StopMove」スクリプトをアタッチします。手順は以下の通りです:

  1. プロジェクト(Project)ウィンドウで「StopMove」スクリプトを探す。
  2. スクリプトをドラッグ&ドロップして、新しいオブジェクトにアタッチ。

3. 動作確認

Unityエディターでゲームを再生(Play)してみましょう。

  • Cubeと新しいオブジェクト(SphereやCapsuleなど)が左右に動き、クリックで一時停止と再開ができるようになっているはずです。

4. 応用例:オブジェクトごとに異なる動きを設定する

「StopMove」スクリプトを複製してカスタマイズすれば、オブジェクトごとに異なる動きをさせることも可能です。

例として、move変数の初期値を変更して、異なるスピードで動くスクリプトを作る方法を紹介します。

  1. プロジェクトウィンドウで「StopMove」スクリプトを右クリックし、「Duplicate」を選択。
  2. 新しいスクリプトの名前を「StopMoveFast」に変更。
  3. スクリプトを開き、以下のようにmove変数の値を変更します。
private float move = 0.2f; // 速く動くように調整
  1. 保存して、新しいスクリプトを別のオブジェクトにアタッチします。

これにより、オブジェクトごとに動きの速度が異なる設定が簡単にできます。


5. 見た目を変える

さらにオブジェクトの**Material(マテリアル)**を変更することで、見た目もバリエーションを持たせることができます。異なる色やテクスチャを設定して、ゲームの世界観をより魅力的にしましょう。


このように、少しの工夫でスクリプトの汎用性を高め、さまざまなオブジェクトに適用することが可能です。ぜひ試してみてください!



よくある質問(Q&A)

Q
Cubeが動かないのですが、原因は何ですか?
A

スクリプトが正しくアタッチされているか確認してください。また、コードにエラーがないか見直しましょう。

Q
Cubeが動くスピードを変えるにはどうすればいいですか?
A

move変数の値を変更することで、スピードを調整できます。

Q
スクリプトを複数のオブジェクトに適用できますか?
A

はい、可能です。スクリプトを他の3Dオブジェクトにアタッチするだけで動作します。

おすすめのアセット

「60 Games Bundle」は、パズル、カジュアル、レトロ、サバイバル、プラットフォーマー、アドベンチャーなど多彩なジャンルのゲームが60本詰まったお得なセットです。これにより、ゲーム開発者は様々なジャンルのゲームを簡単に作成することができます。セットには完全なソースコードが含まれており、カスタマイズも自由自在。個人や小規模企業に最適なライセンスが付いており、購入後のサポートも充実しています。