UnityUnityメモ

【Unity初心者向け】キー操作でスクリプトの動きを中断させてみよう!

Unity

1.はじめに

この記事では、Unityで「P」キーを押している間だけCube(立方体)の動きを中断する仕組みを作る方法をご紹介します。ゲームを開発していると、特定のキー操作で動きを止めたり、再開したりするシステムが必要になることがありますよね。例えば、ポーズメニューを表示したいときや、一時的にキャラクターのアクションを制御したい場合に役立ちます。

今回は、Cubeを上下に動かす基本的なスクリプトを作成しながら、その動きを「P」キーで一時停止できるようにしてみます。プログラム初心者の方でも安心して進められるよう、1ステップずつわかりやすく解説していきます!

完成すれば、Unityでキー入力を活用した簡単な動きの制御方法がマスターできるようになります。それでは、さっそく始めていきましょう!

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



2. 準備:Cubeをシーンに追加

まずは、動きを制御する対象となる3Dオブジェクト「Cube」をシーンに追加します。以下の手順に沿って進めてください。


1. HierarchyウィンドウでCubeを作成

  1. Unityエディターを開き、右側に表示されているHierarchyウィンドウを確認します。
  2. Hierarchyウィンドウ内で右クリックします。
  3. メニューが表示されるので、3D ObjectCube を選択します。

これで、シーンに新しいCubeが追加されます。


2. Cubeの確認と調整

次に、シーンに配置されたCubeを確認しましょう。

  1. SceneビューでCubeが見えることを確認してください。Cubeは白い四角い形で表示されます。
  2. Inspectorウィンドウを開き、Cubeの位置やサイズを確認します。
    • 初期状態では、Cubeの位置(Position)は (0, 0, 0) に設定されています。このままで問題ありませんが、必要に応じて変更できます。
    位置を変更する例:
    • Inspectorウィンドウの「Transform」セクションで、Positionの値を次のように設定してみてください。
      • Position: (0, 1, 0)
      • Cubeが少し上に移動し、見やすくなります。
  3. 必要に応じてCubeのサイズや形を変更することも可能です。
    • サイズを変えたい場合は、Scaleの値を変更します。例えば、(2, 1, 1) にすると、Cubeが横長の形になります。

3. 名前をわかりやすく変更(オプション)

Hierarchyウィンドウ内でCubeを選択し、F2キーを押して名前を変更できます。
ここでは、分かりやすいように「MovingCube」と名前を付けるのがおすすめです。


以上でCubeの追加と準備は完了です!次は、このCubeに動きを付けるスクリプトを作成していきますので、引き続き進めてみましょう。



3. スクリプトの作成

次に、Cubeを上下に動かし、Pキーを押している間だけ動きを中断するスクリプトを作成します。手順は以下の通りです。

スクリプトを作成する

  1. Assetsフォルダを右クリックします。
  2. メニューから「Create」→「C# Script」を選択します。
  3. 新しいスクリプトが作成されるので、名前を「StopMove」に変更します。

これでスクリプトファイルが作成されました。次に、このスクリプトにコードを書き加えていきます。

コードを入力する

作成した「StopMove」スクリプトをダブルクリックして開き、以下のコードを入力してください。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class StopMove : MonoBehaviour
{
    private float count; // 動きのカウンター
    private float move = 0.02f; // Cubeの移動速度

    void Update()
    {
        // 「P」キーが押されている場合は動きを中断
        if (Input.GetKey("p"))
        {
            Time.timeScale = 0f; // 時間を停止
        }
        else
        {
            // Cubeを上下に動かすロジック
            Vector3 position = new Vector3(0, move, 0); // 上下方向の移動量を設定
            transform.Translate(position); // Cubeを移動
            count++;

            // 一定回数動いたら方向を反転
            if (count == 100)
            {
                count = 0;
                move *= -1; // 方向を逆に
            }

            Time.timeScale = 1f; // 時間を再開
        }
    }
}

コードの解説

  1. カウンターの役割
    countという変数を使って、Cubeが一定回数動いたら移動方向を逆転させる仕組みです。
  2. Pキーで動きを停止する方法
    Input.GetKey("p")を使い、「P」キーが押されている間だけTime.timeScale0fに設定します。これにより、Unity内の時間が一時停止し、Cubeの動きも止まります。
  3. Cubeの上下移動
    Vector3を使って上下方向の移動量を設定し、transform.Translate()でその量だけオブジェクトを移動させています。

注意ポイント

  • Input.GetKey("p")で使用するキーは、必ず半角小文字で指定してください。大文字の場合は動作しません。
  • moveの値を変更することで、Cubeの移動速度を調整できます。

これでスクリプトが完成しました!次のステップでは、このスクリプトをCubeにアタッチして、動作確認を行います。



4. スクリプトをCubeにアタッチする方法

次に、作成したスクリプトをCubeにアタッチして、実際に動作させる準備をしましょう!とても簡単なので、ぜひ一緒にやってみてください。

スクリプトをCubeにアタッチする手順

  1. HierarchyウィンドウでCubeを選択
    まず、Hierarchyウィンドウ内に作成したCubeをクリックして選択します。選択されていることを確認するために、Cubeがハイライト表示されることをチェックしてください。
  2. Assetsフォルダからスクリプトを探す
    次に、ProjectウィンドウのAssetsフォルダ内に移動し、先ほど作成した「StopMove」というスクリプトを探します。スクリプトはファイル名の横にC#アイコンが表示されています。
  3. スクリプトをCubeにドラッグ&ドロップ
    「StopMove」スクリプトを左クリックしたまま、Hierarchyウィンドウ内のCubeにドラッグ&ドロップします。すると、Cubeにスクリプトがアタッチされます!
  4. インスペクターで確認
    Cubeを選択した状態で、Inspectorウィンドウを確認してください。「Stop Move (Script)」という項目が追加されていれば、スクリプトのアタッチは成功です!

注意ポイント

  • 間違ったオブジェクトにアタッチしないように注意!
    スクリプトをドラッグする際に、意図しないオブジェクトにアタッチしてしまうことがあります。その場合は、該当オブジェクトを選択し、Inspectorウィンドウの右上にある「…」メニューから「Remove Component」を選択して削除してください。
  • スクリプトを間違えて削除しないように!
    Projectウィンドウからスクリプトを削除すると再作成が必要になります。スクリプトの管理には十分注意しましょう。

これで、スクリプトがCubeにアタッチされました!次は「Play」ボタンを押して動作確認を行いましょう。Cubeが上下に動き、Pキーを押すと停止することを確認してみてください!



5. 動作確認

それでは、作成したスクリプトが正しく動作するか確認してみましょう!以下の手順に従ってください。


Unityエディターでシーンを再生

  1. Unityエディターの上部にある「Play」ボタンをクリックして、シーンを再生します。
  2. 再生が始まると、Hierarchyウィンドウに配置したCubeが上下に動き始めるはずです。もし動かない場合は、次のポイントをチェックしてください:
    • スクリプトがCubeに正しくアタッチされているか。
    • スクリプト内にタイポ(スペルミス)がないか。

動きを止める(Pキーの動作確認)

  1. シーン再生中に、キーボードの「Pキー」を押してみましょう。
  2. 押している間、Cubeの上下運動がピタッと止まることを確認してください。
  3. 「Pキー」を離すと、Cubeが再び上下に動き始めるはずです。

トラブルシューティング

動作が想定どおりでない場合、以下を確認してください:

  1. Consoleウィンドウのエラーメッセージ
    • Unityエディターの下部にある「Console」タブを開きます。
    • エラーが出ている場合は、その内容を確認して、スクリプトを修正してください。
    • よくあるエラー例:
      • スクリプト名とクラス名が一致していない。
      • タイムスケールの設定が間違っている。
  2. Pキーが正しく検出されているか
    • スクリプト内のInput.GetKey("p")の部分が正しいか確認してください。文字の大文字・小文字を間違えると、Unityはキー入力を検出できません。
  3. Cubeが正しい位置にあるか
    • Cubeがカメラに映っていない場合、動作していても見えません。SceneビューでCubeの位置を確認してください。

これで、Cubeが「Pキー」で動きを止める動作が確認できました!再生を停止するには、もう一度「Play」ボタンをクリックしてください。

お疲れさまでした!次のステップとして、他のキーやオブジェクトでも同じ動作を試してみたり、このスクリプトを応用して新しい機能を作ることにも挑戦してみてくださいね!



6. まとめ

この記事では、Unityを使ってCubeを上下に動かし、「P」キーを押している間だけ動きを一時停止する方法を解説しました。以下が今回の手順のまとめです:


  1. Cubeをシーンに追加
    Hierarchyウィンドウで「右クリック」→「3D Object」→「Cube」を選択し、シーンにCubeを追加しました。
  2. スクリプトの作成
    Assetsフォルダで「Create」→「C# Script」を選択して「StopMove」スクリプトを作成し、Cubeの上下運動と「P」キーによる動きの中断を実現しました。
  3. スクリプトのアタッチ
    作成したスクリプトをCubeにドラッグ&ドロップでアタッチし、動きを制御できるように設定しました。
  4. 動作確認
    Unityエディターで「Play」を押し、Cubeが上下に動き、「P」キーで動きが止まることを確認しました。

このチュートリアルを通じて、Time.timeScaleを使って動きを一時停止する方法や、キー入力を活用してゲームオブジェクトを制御する基本的な仕組みを学べたと思います。このテクニックは、ゲーム開発で幅広く活用できます!たとえば、ゲーム内の一時停止メニューを実装したり、特定のイベント中に動きを止めたりする際に役立ちます。


さらに応用するには:

  • 「上下運動」の代わりに他の動きを試す
  • 「P」キー以外のキーや複数のキーを活用する
  • 他のゲームオブジェクトに同じスクリプトを適用する

今回学んだ知識をベースに、自由にカスタマイズして自分だけの仕組みを作ってみてください!ゲーム開発の幅がぐんと広がりますよ。



よくある質問

Q
Cubeが動かない場合はどうすればいいですか?
A

スクリプトが正しくアタッチされているか確認してください。また、Consoleウィンドウでエラーが出ていないか確認してください。

Q
Pキーを押しても動きが止まりません。原因は何ですか?
A

スクリプト内のInput.GetKey("p")が正しく記述されているか確認してください。大文字・小文字を間違えると動作しません。

Q
他のキーでも動きを止めたいのですが、どうすればいいですか?
A

スクリプト内の"p"を別のキー名(例: "space")に変更してください。

おすすめのアセット

Puzzle Match Game Kit Bundleは、初心者から上級者まで幅広く対応するパズルマッチゲームのテンプレートです。このキットには、完成度の高いパズルゲームを簡単に作成するためのすべての必要なツールとリソースが含まれています。エディタ拡張機能やスクリプトが豊富で、カスタマイズも容易です。