UnityUnityメモ

Unityでスムーズにオブジェクトをマウス追従させるスクリプト

Unity

はじめに

Unityでゲームを作るとき、オブジェクトを動かす方法はたくさんありますよね。その中でも、今回は「マウスカーソルの位置に向かってオブジェクトを移動させる方法」を紹介します!例えば、マウスに追従するキャラクターや敵を作りたいときに、この技術が役立ちますよ。

このチュートリアルでは、初心者の方でも分かりやすいように、手順を一つひとつ丁寧に解説していきます。シーンにオブジェクトを追加するところから、簡単なスクリプトを書いて動作確認をするところまでをカバーしますので、一緒にチャレンジしてみましょう!

それでは、さっそく始めていきましょう!

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



1. シーンに「Sphere」オブジェクトを追加

まずは、移動させる対象となる「Sphere」オブジェクトをシーンに追加します。以下の手順に従って簡単に追加できますよ。


手順

  1. ヒエラルキー(Hierarchy)ウィンドウを確認してください。ここには、現在のシーンに存在するすべてのオブジェクトが表示されています。
  2. ヒエラルキーウィンドウ内で右クリックします。
  3. 表示されるメニューから「3D Object」→「Sphere」を選択します。

シーン内に「Sphere」が表示されていれば成功です。今後、このSphereがマウスカーソルに向かって移動するようになります。ヒエラルキーで「Sphere」を選択した状態で、インスペクター(Inspector)ウィンドウを確認すると、オブジェクトの位置や大きさなどを調整できます。必要に応じてサイズや位置を変更してみてください!



2.スクリプトの作成

次は、オブジェクトをマウスカーソルに向かって動かすためのスクリプトを作成します。スクリプトの作り方はとっても簡単なので、手順に従って進めていきましょう!


手順

  1. プロジェクト(Project)ウィンドウを開いてください。このウィンドウは、ゲームのすべてのファイルやアセットを管理する場所です。
  2. プロジェクトウィンドウ内で右クリックします。
  3. 「Create」→「C# Script」を選択します。
  4. 新しく作成されたスクリプトに「MouseFollower」という名前を付けます。

これでスクリプトの作成が完了しました!次は、このスクリプトにコードを書いていきます。準備はいいですか?さっそく次のステップに進みましょう!



3.スクリプトにコードを記述

スクリプトが作成できたら、次は中身を記述していきます。このコードによって、「Sphere」がマウスカーソルの位置に向かって動くようになります。


手順

  1. プロジェクトウィンドウで「MouseFollower」スクリプトをダブルクリックします。
    → スクリプトがVisual Studioなどのコードエディタで開きます。
  2. 以下のコードを、エディタ内に入力します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MouseFollower : MonoBehaviour
{
    private Vector3 mouse;     // マウス位置を保存する変数
    private Vector3 target;    // 目的地の座標
    public float speed;        // 移動スピード

    void Start()
    {
        // 初期設定:移動スピードを設定
        speed = 0.01f;
    }

    void Update()
    {
        // マウス位置を取得
        mouse = Input.mousePosition;

        // マウスのスクリーン座標をワールド座標に変換
        target = Camera.main.ScreenToWorldPoint(new Vector3(mouse.x, mouse.y, 10));

        // オブジェクトをマウスの方向に向ける
        transform.LookAt(target);

        // オブジェクトを前方に少しずつ移動
        transform.position += transform.forward * speed;
    }
}

コードの説明

  • Input.mousePosition
    マウスカーソルの現在位置を取得します(スクリーン座標)。
  • Camera.main.ScreenToWorldPoint
    スクリーン座標をワールド座標に変換します。このとき、カメラからの距離(ここでは10)を指定する必要があります。
  • transform.LookAt(target)
    オブジェクトがターゲット(マウス位置)を向くように回転します。
  • transform.position += transform.forward * speed;
    オブジェクトを前方に少しずつ移動させます。移動速度はspeedで調整できます。

コードを書き終えたら、エディタで「Ctrl + S」または「Command + S」でスクリプトを保存してください。

次は、このスクリプトをシーン内のオブジェクトに適用する方法を解説します!



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

スクリプトの準備ができたら、次はそれを「Sphere」オブジェクトにアタッチ(関連付け)します。この作業を行うことで、「Sphere」がスクリプトの指示通りに動くようになります。


手順

  1. プロジェクトウィンドウを開き、「MouseFollower」スクリプトを見つけてください。
  2. ヒエラルキーウィンドウで「Sphere」オブジェクトをクリックして選択します。
    → これで「Sphere」が選択状態になります。
  3. 「MouseFollower」スクリプトをドラッグして、「Sphere」にドロップします。
    → ドロップすると、「Sphere」にスクリプトがアタッチされます。
  4. アタッチされたことを確認するには、インスペクター(Inspector)ウィンドウを見てください。「MouseFollower」という名前のスクリプトが表示されていれば成功です。

ポイント

  • スクリプトをアタッチするとき、必ずオブジェクトを正しく選択していることを確認してください。
  • スクリプトのspeed変数をインスペクターで確認できます。この値を変更することで、オブジェクトの移動速度を調整できます。

これでスクリプトが「Sphere」に適用されました!次は実際に動作を確認してみましょう。マウスを動かすとオブジェクトがどのように反応するのか、楽しみですね!



5. 動作確認

最後に、スクリプトが正しく動作しているかを確認しましょう!以下の手順に従って、シーン内の「Sphere」がマウスカーソルに向かって移動するかどうかをチェックします。


手順

  1. Unityエディターの上部にある「Play」ボタン(▶)をクリックします。
    → プレイモードが開始され、ゲームが動作する状態になります。
  2. シーンビューまたはゲームビューでマウスを動かしてみてください。
    → 「Sphere」がマウスカーソルの位置に向かって動いているはずです!
  3. 必要に応じて、インスペクターでspeed変数を調整して、オブジェクトの移動速度を変更してみましょう。例えば、0.05fにすると少し速くなります。
  4. 動作確認が終わったら、「Play」ボタンを再びクリックしてプレイモードを終了します。

よくある問題と対処法

  • オブジェクトが動かない場合
    1. 「Sphere」にスクリプトが正しくアタッチされているか確認します。
    2. カメラがシーンに正しく配置されているかを確認します(スクリプトではカメラが必要です)。
  • 動きが遅いまたは速すぎる場合
    インスペクターでspeedの値を適切に調整してください。

これで全ての手順が完了しました!🎉
シーン内で「Sphere」がスムーズにマウスカーソルに向かって動いていれば、大成功です。自分のゲームアイディアに応用して、さらに面白い仕組みを作ってみましょう!



よくある質問(Q&A)

Q
オブジェクトが動かないのですが?
A

スクリプトが「Sphere」にアタッチされているか、カメラが適切に配置されているかを確認してください。

Q
動くスピードを調整したい場合はどうすればいいですか?
A

スクリプト内の speed 変数の値を変更してください。例えば、0.05fにすると速くなります。

Q
他のオブジェクトにも使えますか?
A

はい!「Sphere」以外のオブジェクトにも同じスクリプトをアタッチすれば使用できます。