UnityUnityメモ

Unity3Dで簡単!プレイヤーを追いかけるオブジェクトを作る方法

Unity

1. はじめに

「Unityでゲームを作るとき、敵キャラやアイテムがプレイヤーを追尾する動きを追加したいことがありますよね。今回は、そんな機能を簡単に実装できる方法を初心者向けに解説します!スクリプトの基本から設定まで丁寧に紹介するので、ぜひ参考にしてください。」

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



2. 必要な準備

プレイヤーを追尾するオブジェクトを作るためには、いくつかの準備が必要です。以下の手順で進めましょう!


1. Unityプロジェクトの作成

Unityを起動し、新しい3Dプロジェクトを作成します。プロジェクト名は「ChasePlayerExample」など、分かりやすい名前にすると良いでしょう。


2. シーンにオブジェクトを配置

  1. 床を配置する
    • ヒエラルキー(Hierarchy)ウィンドウを右クリックします。
    • 「3D Object」→「Plane」を選択します。
  2. 追尾するオブジェクトを作成
    • ヒエラルキー(Hierarchy)ウィンドウを右クリックします。
    • 「3D Object」→「Cube」を選択します。
    • 作成したCubeの名前を「Chaser」に変更しましょう。
  3. プレイヤーオブジェクトを作成
    • 同じくヒエラルキーウィンドウで右クリックし、「3D Object」→「Cube」を選択します。
    • 名前を「Player」に変更します。
    • ヒント:Cubeを見やすい色に変更するには、インスペクター(Inspector)ウィンドウで「Mesh Renderer」の「Material」を設定します。

物理特性を追加する

作成したプレイヤーと追尾するオブジェクトに物理特性を追加します。

  • インスペクター画面の「AddComponent」ボタンをクリックします。
  • 「Rigidbody」を検索して追加します。



3. スクリプトの作成

ここでは、プレイヤーを追尾するオブジェクトの動きを制御するスクリプトを作成します。以下の手順に従って進めてください。

スクリプトの準備

  1. スクリプトを作成
    • プロジェクトウィンドウを右クリックし、「Create」→「C# Script」を選択します。
    • スクリプト名をChasePlayerに変更します。

スクリプトを編集する

先ほど作成したChasePlayerスクリプトをダブルクリックして開きます。Unityエディターでデフォルトのコードエディターが起動します。

以下のコードを入力します。

using UnityEngine;

public class ChasePlayer : MonoBehaviour
{
    // プレイヤーのTransformを参照するための変数
    public Transform player;

    // オブジェクトの移動速度
    public float speed = 5.0f;

    void Update()
    {
        // プレイヤーへの方向ベクトルを計算
        Vector3 direction = player.position - transform.position;
        
        // ベクトルを正規化して移動方向を決定
        direction.Normalize();
        
        // オブジェクトを移動
        transform.position += direction * speed * Time.deltaTime;
    }
}

2. スクリプトの内容を解説

  1. player変数
    • プレイヤー(Sphere)の位置を参照するために使用します。Transform型で定義しています。
    • この変数は、後ほどインスペクターで設定します。
  2. speed変数
    • オブジェクトがプレイヤーに向かって移動する速さを制御します。値を調整することで移動速度を変更できます。
  3. Updateメソッド
    • 毎フレーム実行されるメソッドです。
    • プレイヤーの位置と自分の位置との差を計算し、正規化(Normalize)して移動方向を決定します。
    • Time.deltaTimeを掛けることで、フレームレートに依存せず一定の速度で移動します。

3. スクリプトを設定する

  1. スクリプトをアタッチする
    • ヒエラルキーウィンドウで「Chaser」を選択します。
    • 作成したChasePlayerスクリプトをドラッグ&ドロップしてアタッチします。
  2. プレイヤーを設定する
    • インスペクターでChasePlayerスクリプトを確認し、Playerフィールドに「Player」(Cube)をドラッグ&ドロップします。



4. 実行

準備が整ったら、Unityで実際にプレイヤー追尾オブジェクトが正しく動作するか確認しましょう。


1. 再生モードに切り替え

Unityエディター上部にある再生ボタン(▶)をクリックして、プレイモードに切り替えます。

これで完成です!再生モードを止めるには、もう一度再生ボタン(▶)をクリックしてください。
「プレイヤーを追尾するオブジェクト」がどのように機能するか、試してみてくださいね!



よくある質問(Q&A)

Q
プレイヤーの速度を変更できますか?
A

はい!スクリプト内のspeed変数を変更すれば、追跡の速さを簡単に調整できます。

Q
プレイヤーが止まると追跡オブジェクトも止まりますか?
A

その通りです!スクリプトはプレイヤーの位置に基づいて動作します。

Q
2Dゲームでも使えますか?
A

このスクリプトは3D用ですが、2D用に応用する場合、transform.positionVector2を使用すれば対応できます。

おすすめのアセット

「Car Chase And Drift Template」は、Unityでカーチェイスやドリフトシーンを作成するためのテンプレートです。初心者から上級者まで幅広く使えます。このテンプレートは、リアルな車の動きやドリフトアクションを簡単に再現できるのが特徴です。

このテンプレートには、すぐに使える車両モデルやコントローラー、エフェクトなどが含まれています。また、物理エンジンを利用してリアルな挙動を実現しており、簡単なカスタマイズも可能です。