スポンサーリンク
UnityUnityメモ

Unityでモグラ叩きゲームを作ろう!モグラの動きスクリプト完全ガイド

Unity

1. はじめに

モグラ叩きゲームは、シンプルながらも楽しいゲームとして人気があります。プレイヤーが素早く反応してモグラを叩くことで得点を競うこのゲームは、初心者でも簡単に学べるUnityの基本を応用するのに最適なプロジェクトです。

この記事では、Unityを使ってモグラ叩きゲームのモグラ動作を再現する方法を紹介します。具体的には、モグラが地面のエリア内をランダムに移動し、一定時間ごとに顔を出したり引っ込めたりする動作をスクリプトで実装していきます。

Unity初心者の方でも理解しやすいように、ステップバイステップで説明しますので安心してください!この記事を読めば、Unityでゲーム開発の基本的なスクリプトの書き方や、ランダムな動きの実装方法を習得できます。

それでは、さっそくモグラ叩きゲームを作り始めましょう!

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


2.Unityプロジェクトの準備

まずはモグラ叩きゲームの基本となるモグラと地面のオブジェクトをUnityに配置していきましょう。このステップでは、ヒエラルキーウィンドウを使って必要な3Dオブジェクトを作成し、それぞれの役割を決めます。


1. モグラのオブジェクトを作成

  1. ヒエラルキーウィンドウで右クリックします。
  2. 3D Object」→「Capsule」を選択します。
    • このCapsuleがモグラの役割を果たします。
  3. 名前を「Mole」に変更しておきましょう。
  4. モグラらしい外見にしたい場合は、以下の手順で色を変更できます。
    • インスペクターウィンドウで「Mesh Renderer」コンポーネントを探します。
    • Materials」セクション内の「Element 0」をクリックして、色を設定します。
    • 新しいマテリアルを作成して適用すると、さらに個性的な見た目にできます。

2. モグラが動く地面を作成

  1. ヒエラルキーウィンドウで右クリックします。
  2. 3D Object」→「Cube」を選択します。
    • このCubeがモグラが移動する地面になります。
  3. 名前を「Ground」に変更しましょう。
  4. インスペクターウィンドウで以下のようにスケールを調整します。
    • **Scale (X, Y, Z)**を「15, 2, 15」に設定します。
    • これで広い地面が作成されます。
  5. 見やすい地面にするため、好きな色やテクスチャを設定してみてください。

3. カメラの調整

モグラの動きが見やすいようにカメラを配置し直します。

  1. ヒエラルキーウィンドウで「Main Camera」を選択します。
  2. インスペクターウィンドウの「Transform」を調整します。
    • **Position (X, Y, Z)**を「0, 10, -10」に設定します。
    • **Rotation (X, Y, Z)**を「45, 0, 0」に設定します。
    • これで地面全体を見渡せる位置にカメラが配置されます。

自分のプロジェクトで見やすい位置に調整してみてください!

これで、モグラが動く準備が整いました!次のステップでは、実際にモグラをランダムに移動させるスクリプトを作成していきましょう。




3. スクリプトの作成

モグラの動きを実現するために、Unityでスクリプトを作成しましょう。このスクリプトは、モグラがランダムに移動し、上下に動く挙動を制御します。以下の手順でスクリプトを作成してください。

1. Projectウィンドウでスクリプトを作成

  1. UnityのProjectウィンドウを開きます。
  2. 任意のフォルダ内で右クリックし、CreateC# Scriptを選択します。
  3. スクリプトの名前を「MoleMovement」に変更します。
    • 名前を付けた後は、Enterキーを押して確定してください。

2. スクリプトを編集する

  1. 作成したスクリプト「MoleMovement」をダブルクリックして開きます。
    • 使用するコードエディタ(Visual StudioやRiderなど)が起動します。
  2. 以下のコードをコピーして、スクリプトに貼り付けます。
using UnityEngine;

public class MoleMovement : MonoBehaviour
{
    public float moveRange = 5f; // モグラが移動する範囲
    public float moveSpeed = 2f; // モグラの移動速度
    public float hideTime = 1f; // モグラが隠れる時間
    public float showTime = 1f; // モグラが出ている時間

    private Vector3 startPos;
    private bool isMovingUp = false;
    private float timer = 0f;

    void Start()
    {
        startPos = transform.position; // モグラの初期位置を保存
        MoveToRandomPosition(); // 最初の移動を実行
    }

    void Update()
    {
        timer += Time.deltaTime;

        if (isMovingUp) // モグラが出てくるとき
        {
            if (timer >= showTime)
            {
                isMovingUp = false;
                timer = 0f;
            }
        }
        else // モグラが隠れるとき
        {
            if (timer >= hideTime)
            {
                MoveToRandomPosition();
                isMovingUp = true;
                timer = 0f;
            }
        }

        // 上下の動き
        float newY = isMovingUp ? startPos.y + 1f : startPos.y;
        transform.position = new Vector3(transform.position.x, Mathf.Lerp(transform.position.y, newY, Time.deltaTime * moveSpeed), transform.position.z);
    }

    void MoveToRandomPosition()
    {
        float randomX = Random.Range(-moveRange, moveRange);
        float randomZ = Random.Range(-moveRange, moveRange);
        Vector3 newPosition = new Vector3(randomX, startPos.y, randomZ);
        transform.position = newPosition;
    }
}
  1. 貼り付けたコードを保存します(Ctrl + S または Command + S)。

これで、モグラの動きを制御するスクリプトの作成が完了しました。次は、このスクリプトの簡単な解説を進めていきます!




4. スクリプトの解説

以下に記載したスクリプト「MoleMovement」は、モグラのランダム移動や上下動作、時間による状態管理を一つのスクリプトで実現しています。それぞれの重要な部分を順番に解説していきます。

① ランダムな移動 (MoveToRandomPositionメソッド)

void MoveToRandomPosition()
{
float randomX = Random.Range(-moveRange, moveRange);
float randomZ = Random.Range(-moveRange, moveRange);
Vector3 newPosition = new Vector3(randomX, startPos.y, randomZ);
transform.position = newPosition;
}
  • ランダムな座標の生成
    Random.Rangeを使用して、-moveRangeからmoveRangeの範囲内でランダムなX座標とZ座標を計算します。
  • 新しい位置の設定
    モグラの初期位置のY座標(高さ)を維持しつつ、ランダムに計算したX座標とZ座標を設定します。これにより、モグラは地面の範囲内を移動します。

② 上下動作 (Updateメソッド)

float newY = isMovingUp ? startPos.y + 1f : startPos.y;
transform.position = new Vector3(transform.position.x, Mathf.Lerp(transform.position.y, newY, Time.deltaTime * moveSpeed), transform.position.z);
  • 高さの設定
    モグラが「顔を出している状態」(isMovingUp = true)の場合は、初期位置より1ユニット高い位置を目標に設定します。それ以外の場合は初期位置に戻ります。
  • 滑らかな移動
    Mathf.Lerpを使うことで、現在の高さから目標の高さにかけて徐々に移動します。これにより、モグラの動きがリアルに見える効果があります。

③ 状態の管理 (時間による切り替え)

if (isMovingUp)
{
if (timer >= showTime)
{
isMovingUp = false;
timer = 0f;
}
}
else
{
if (timer >= hideTime)
{
MoveToRandomPosition();
isMovingUp = true;
timer = 0f;
}
}
  • 状態の切り替え
    timershowTimeまたはhideTimeを超えると、モグラの状態(隠れる/出る)を切り替えます。
  • ランダム移動のタイミング
    モグラが隠れるタイミングでMoveToRandomPositionを呼び出し、次に顔を出す位置を決定します。

このスクリプトを使用すれば、モグラが地面内でランダムに動きながら、一定時間ごとに顔を出したり隠れたりする動作を簡単に実現できます。次に、Unityエディタに戻り、スクリプトをオブジェクトにアタッチして動作を確認しましょう!




5.スクリプトをオブジェクトにアタッチ

次に、作成したスクリプトをモグラのオブジェクトにアタッチします。この手順を行うことで、モグラの動きがスクリプトで制御されるようになります。


手順1:モグラオブジェクトを選択

Unityエディターの Hierarchyウィンドウ から、モグラとして配置したオブジェクト(たとえば、Capsule)をクリックして選択します。


手順2:スクリプトをドラッグ&ドロップ

  1. Projectウィンドウ を開きます。
  2. 先ほど作成した MoleMovement スクリプトを探します。
  3. スクリプトを左クリックしたまま、Hierarchyウィンドウ内のモグラオブジェクトにドラッグ&ドロップします。

手順3:スクリプトが正しくアタッチされているか確認

  1. モグラオブジェクトを選択した状態で Inspectorウィンドウ を確認します。
  2. 下のほうに、MoleMovement (Script) という項目が表示されていれば、スクリプトが正しくアタッチされています。

手順4:スクリプトのパラメータを設定(必要に応じて)

Inspectorウィンドウ内でスクリプトが表示されている場合、以下のパラメータを必要に応じて変更できます。

  • Move Range:モグラが移動する範囲(デフォルトは5)
  • Move Speed:モグラの上下動作の速度(デフォルトは2)
  • Hide Time:モグラが隠れている時間(デフォルトは1)
  • Show Time:モグラが顔を出している時間(デフォルトは1)

この設定を変えることで、モグラの動作をカスタマイズできます。

これでスクリプトのアタッチは完了です!次は、ゲームを実行して動作を確認しましょう!




6. 完成した動作の確認

Unityで「再生ボタン」を押すと、スクリプトに基づいてモグラが動き始めます。以下のポイントを確認して、正しく動作しているかチェックしてみましょう。

確認ポイント1: モグラのランダム移動

  • モグラが指定した範囲(moveRangeで設定した値)内をランダムに移動しているかを確認してください。
  • モグラが移動する際に地面の外に出てしまう場合は、moveRangeの値を調整してください。

確認ポイント2: 上下動作

  • モグラが一定時間(hideTimeshowTimeで設定した時間)ごとに上下に動くかをチェックしましょう。
  • モグラが滑らかに動いていない場合は、moveSpeedの値を大きくすると改善することがあります。

確認ポイント3: 動作の繰り返し

  • モグラが隠れる→出現する動作を繰り返しているか確認してください。
  • スクリプトのhideTimeshowTimeを変更して、動作のタイミングを調整するとゲームのテンポに合った動きが実現できます。

動かない場合の確認

もしモグラが動かない、または期待通りに動作しない場合は、以下を確認してください。

  1. スクリプトが正しくアタッチされているか
    • 「MoleMovement」スクリプトがモグラのオブジェクトにアタッチされていることを確認してください。
  2. コンソールにエラーが出ていないか
    • Unityの「コンソール」ウィンドウを確認し、エラーが表示されていないか確認してください。
  3. パラメータ設定
    • moveRangehideTimeshowTimeなどのパラメータを見直して、適切な値になっているか確認してください。

おすすめのテスト方法

  • 異なる数値を試してみる
    moveSpeedmoveRangeの値を変えて、モグラの動きがどのように変わるか試してみましょう。値を少しずつ変更することで、理想的な動きを探せます。
  • 複数のモグラを追加する
    モグラオブジェクトを複製して動作を確認すると、よりゲームらしい動きになります。各モグラにスクリプトをアタッチし、パラメータを少し変えることで個性を持たせることも可能です。

これで動作確認ができれば、モグラのランダム移動と上下動作が完成です!次は、ゲームらしい追加要素を実装してみてください!


おすすめのアセット

「Whack A Mole Game Template」は、モグラ叩きゲームを簡単に作れるUnityテンプレートです。基本的なゲームプレイやUIが含まれており、タッチやマウス操作に対応。カジュアルゲームやアーケードゲームのプロトタイプを作るのに最適です。テンプレートを利用すれば、すぐに動作するモグラ叩きゲームが作れ、初心者でも簡単にカスタマイズできます。さまざまなプラットフォーム対応で、モバイルやPC向けにも活用可能です。


あわせて読みたい


まとめ

今回の記事では、Unityを使ったモグラ叩きゲームのモグラの動きを実現する方法を紹介しました。プロジェクトの準備からスクリプトの作成、アタッチ、そして動作確認まで、初心者の方にもわかりやすいステップで進めてきました。


スクリプトでは、モグラがランダムに移動しながら、上下に動く自然な動きを再現する方法を学びました。特に以下のポイントが重要です:

  • ランダム移動Random.Rangeを活用して、モグラが一定範囲内を自由に移動する仕組みを実装。
  • 上下動作Mathf.Lerpを使って、モグラがスムーズに顔を出したり隠したりする動きを表現。
  • 時間管理hideTimeshowTimeの設定で、モグラの出現タイミングを調整。

これらの仕組みを組み合わせることで、モグラが動き回るリアルな挙動を簡単に実現できます。Unity初心者にとって、こうした動作の実装は基本スキルを磨く良い機会です。

このプロジェクトを応用して、例えばモグラが一定時間内にクリックされた回数をカウントするスコアシステムを追加したり、複数のモグラを動かしてゲームの難易度を上げたりすることもできます。さらに、アニメーションやサウンドを組み込むことで、より完成度の高いゲームを作成することができるでしょう。

Unityを使ったゲーム開発はアイデア次第で無限の可能性があります。ぜひこの記事を参考にして、モグラ叩きゲームの発展形や新しいゲームのアイデアにチャレンジしてみてください!


よくある質問

Q
モグラが動かない場合の対処法は?
A

モグラが動かない原因として以下の点を確認してください。

  • スクリプトがモグラのオブジェクトにアタッチされているか確認。
  • Unityエディターの「Console」タブでエラーメッセージが表示されていないかチェック。
  • モグラのmoveRangemoveSpeedの値が正しく設定されているか確認。
  • スクリプト内のUpdate()メソッドが無効化されていないかチェック。
Q
ランダム移動が正しく機能しないのはなぜ?
A

モグラのランダム移動が期待通りに動かない場合、以下を確認してください。

  • moveRangeの値が適切であるか(例えば、非常に小さい値だと移動範囲が狭すぎます)。
  • MoveToRandomPositionメソッドが正しく呼び出されているか(特に、隠れるタイミングでの呼び出し部分)。
  • モグラのY座標が地面と同じ高さになっているか確認。座標が異なると見えない位置に移動してしまうことがあります。
Q
モグラの速度や範囲を調整するにはどうすればいいですか?
A

スクリプト内で以下のパラメーターを変更することで調整が可能です。

  • moveSpeed:モグラの上下動作の速度を調整します。値を大きくすると速くなり、小さくするとゆっくりになります。
  • moveRange:モグラが移動できる範囲を設定します。この値を増やすと広い範囲を移動するようになります。
  • hideTimeshowTime:モグラが隠れている時間と出ている時間をそれぞれ調整できます。

※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。

※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。

スポンサーリンク