はじめに
Unityを使ったゲーム開発において、マウスカーソルに向かってオブジェクトが移動する機能は、多くのアプリケーションやゲームで見られる人気の高い機能です。この記事では、Unity初心者でも理解しやすいように、マウスカーソルに向かってオブジェクトを移動させる方法をステップバイステップで説明します。
Unityプロジェクトの準備
まず、Unityを開き、「新規プロジェクト」を作成します。プロジェクト名は何でも良いですが、「MouseFollower」とすると、プロジェクトの内容を思い出しやすいかもしれません。3Dテンプレートを選択してプロジェクトを作成しましょう。
シーンのセットアップ
プロジェクトが開いたら、新しいシーンを作成し、「MainScene」と名付けます。次に、移動させたいオブジェクトをシーンに追加します。簡単な例として、Unityのメニューから「GameObject」→「3D Object」→「Sphere」を選択して、球体を作成しましょう。この球体が、後ほどマウスカーソルに向かって移動するオブジェクトになります。
スクリプトの作成
オブジェクトがマウスカーソルに向かって移動するようにするためには、スクリプトを書く必要があります。
Unityのエディタで「Assets」フォルダ内に「Scripts」という新しいフォルダを作成し、その中に「MouseFollower.cs」という名前のC#スクリプトを新規作成します。
スクリプトの中身は以下のようになります。
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;
}
}
このスクリプトは、Unityでマウスカーソルに追従するオブジェクトを作成するためのものです。スクリプトの動作は以下の通りです:
MouseFollower
クラスはMonoBehaviour
を継承しており、Unityのゲームオブジェクトにアタッチすることで機能します。private Vector3 mouse;
とprivate Vector3 target;
は、それぞれマウスカーソルのスクリーン座標と、ゲーム世界内での目標位置を保持するための変数です。public float speed;
はオブジェクトの移動速度を制御するパブリック変数です。これにより、インスペクターから直接速度を調整できます。Start
メソッドでは、移動速度speed
の初期値を0.01f
に設定しています。必要に応じてこの値を調整して、オブジェクトの移動速度を変更できます。Update
メソッドは毎フレーム呼び出され、オブジェクトの位置と向きを更新します。まず、Input.mousePosition
を使用してマウスカーソルのスクリーン座標を取得し、Camera.main.ScreenToWorldPoint
メソッドを使ってこれをゲーム世界の座標に変換します。transform.LookAt(target);
でオブジェクトがターゲット(マウスカーソルの位置)を常に向くようにし、transform.position += transform.forward * speed;
でオブジェクトを前方に向かって移動させます。
このスクリプトをゲームオブジェクトにアタッチし、Unityエディターでプレイモードに入ると、オブジェクトがマウスカーソルを追いかける動作を確認できます。オブジェクトの移動速度は、インスペクターからspeed
変数を調整することで変更可能です。
スクリプトの適用
スクリプトを作成したら、それを移動させたいオブジェクトに適用します。この例では、先ほど作成した球体に適用します。球体を選択し、インスペクター画面で「Add Component」ボタンをクリックして、「Scripts」→「MouseFollower」を選択します。
おわりに
これで、Unityでマウスカーソルに向かってオブジェクトが移動するシンプルな機能を実装する方法をマスターしました。この基本を応用すれば、より複雑なゲームのメカニクスを開発することが可能になります。Unityでのゲーム開発は、想像力と創造力があれば無限に広がる世界です。何か新しいことに挑戦したくなったら、この記事を参考にしてみてください。