Unityでゲームやアプリを作成する際、マウスカーソルに追従するオブジェクトを実装したい場面がよくあります。今回は、特に横方向のみに動かせるしくみの作り方に焦点を当てて解説します。この記事を読むことで、初心者でも簡単に理解し、実装できるようになります。
はじめに
Unityでゲーム開発を始めたばかりの方にとって、マウスの動きにオブジェクトを追従させる機能は魅力的でありながらも、少し難しく感じるかもしれません。しかし、基本的なステップを踏むことで、誰でも簡単にこの機能を実装できます。この記事では、Unityの基本操作からスクリプトの書き方まで、一歩一歩丁寧に解説していきます。
Unityの準備
まずはUnityプロジェクトを開設し、動かしたいオブジェクトをシーンに配置しましょう。この例では、シンプルなCubeオブジェクトを使用します。Hierarchyビューで右クリックし、「3D Object > Cube」と選択してCubeをシーンに追加します。
![](https://cbagames.jp/wp-content/uploads/2024/02/2024-02-03_151313.png)
スクリプトの作成
Cubeオブジェクトにマウスカーソルの動きに追従させるためには、スクリプトを作成してCubeオブジェクトにアタッチする必要があります。以下の手順でスクリプトを作成しましょう。
- 「Assets」フォルダ内で右クリックし、「Create > C# Script」と選択します。新しいスクリプトに「FollowMouse」という名前をつけます。
- 「FollowMouse」スクリプトをダブルクリックして開き、コードエディタに以下のスクリプトを入力します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FollowMouse: MonoBehaviour
{
private Vector2 mousePos;
private Vector3 objPos;
void Update()
{
mousePos = Input.mousePosition;
objPos = Camera.main.ScreenToWorldPoint(new Vector3(mousePos.x, mousePos.y, 10));
objPos.y = this.transform.position.y;
this.transform.position = objPos;
Debug.Log(mousePos);
}
}
このスクリプトは、Unityでマウスカーソルの位置に基づいてオブジェクト(この場合はCube)を動かすためのものです。スクリプトの主な機能と動作を解説します。
スクリプトの概要
mousePos
: マウスカーソルのスクリーン座標を保持するためのVector2
変数です。objPos
: オブジェクトのワールド座標を保持するためのVector3
変数です。
動作の流れ
- マウスのスクリーン座標の取得:
Update
メソッド内で毎フレーム、Input.mousePosition
を用いてマウスカーソルの現在のスクリーン座標を取得し、mousePos
に格納します。 - スクリーン座標をワールド座標に変換:
Camera.main.ScreenToWorldPoint
メソッドを使用して、マウスのスクリーン座標をワールド座標に変換します。このとき、Z座標には10を指定していますが、これはカメラからの距離を意味し、適切に調整する必要があります。 - Y座標の固定: 変換されたワールド座標のY値を、オブジェクトの現在のY座標(
this.transform.position.y
)に固定します。これにより、オブジェクトは横方向のみ(X軸に沿って)動き、縦方向(Y軸に沿って)には動きません。 - オブジェクトの位置の更新: 最後に、オブジェクトの位置を更新したワールド座標(
objPos
)に設定します。
デバッグ情報の表示
Debug.Log(mousePos)
: マウスのスクリーン座標をコンソールに出力します。これはデバッグ目的で使用され、実際のゲームやアプリケーションで必要ない場合は削除することが推奨されます。
注意点
- カメラの種類(透視投影か平行投影か)や設定によって、オブジェクトの移動感が異なる場合があります。特に、
ScreenToWorldPoint
で指定するZ座標の値は、シーンとカメラの設定に応じて調整する必要があります。 - このスクリプトは、オブジェクトをマウスカーソルに追従させる基本的な方法を示していますが、実際のプロジェクトに応じてカスタマイズが必要になるかもしれません。たとえば、オブジェクトが画面外に出ないように制限を加えるなどの追加的な機能を実装することも考えられます。
このスクリプトを使うことで、Unity内でマウスカーソルに追従するオブジェクトの動きを簡単に実装できます。実際に試しながら、必要に応じてカスタマイズしてみてください。
スクリプトのアタッチ
スクリプトをCubeオブジェクトにアタッチするには、スクリプトを選択し、ドラッグ&ドロップでCubeオブジェクトに適用します。これで、シーンを再生すると、Cubeがマウスカーソルの横方向の動きに追従するようになります。
まとめ
Unityでマウスカーソルに追従するオブジェクトを横方向に限定して動かす方法は、非常に簡単です。この記事を通じて、基本的なスクリプトの作成からオブジェクトの制御方法まで、初心者の方でも容易に理解し実装できることでしょう。Unityでのゲーム開発がこれまで以上に楽しくなるはずです。ぜひこの知識を活用して、さまざまなプロジェクトに挑戦してみてください。