今回は、Unityでオブジェクトを横方向(X軸)にのみマウスカーソルに追従させる方法を紹介します。初心者にもわかりやすく、解説するので安心してください!
オブジェクトを作成する
次に、シーンにオブジェクトを追加します。
- ヒエラルキー(Hierarchy)ウィンドウで右クリック
- 3D Object を選び
- Cube を選択
これでシーンにキューブが追加されました。
スクリプトの作成
次に、オブジェクトをマウスカーソルに追従させるスクリプトを作成します。
- プロジェクト(Project)ウィンドウで右クリック
- Create を選び
- C# Script を選択し、スクリプト名を「FollowMouse」にします。
- 作成したスクリプトをダブルクリックして、Visual Studioで開きます。以下のコードを入力しましょう。
全体の説明
このスクリプトは、ゲームオブジェクトがマウスの動きに合わせて動くようにするものです。具体的には、マウスカーソルのX位置にゲームオブジェクトを合わせて移動させます。ただし、Y位置は変わらず、常に同じ高さにとどまります。
各部分の説明
using ステートメント
- Unityのスクリプトを書くために必要なライブラリをインポートしています。
クラス宣言
FollowMouse
という名前のクラスを作成しています。このクラスはMonoBehaviour
を継承しています。MonoBehaviour
は、Unityでスクリプトを使うための基本的なクラスです。
変数宣言
mousePos
は、マウスの位置を保存するための変数です。2Dベクトル(X, Y)で表されます。objPos
は、ゲームオブジェクトの位置を保存するための変数です。3Dベクトル(X, Y, Z)で表されます。
Updateメソッド
Update
メソッドは、フレームごとに呼び出されます。つまり、ゲームの実行中ずっと繰り返し実行されます。
マウスの位置を取得
- 現在のマウスの画面上の位置を取得し、それを
mousePos
に保存します。
画面上の位置をワールド座標に変換
- 画面上の位置(2D)をワールド座標(3D)に変換します。ここでは、カメラからの距離を10としています。
Y座標を固定
- ゲームオブジェクトのY位置を現在の位置に固定します。これで、オブジェクトはY方向には動かず、X方向のみ動くようになります。
オブジェクトの位置を更新
- ゲームオブジェクトの位置を
objPos
に更新します。これで、マウスのX位置に合わせてオブジェクトが動きます。
デバッグログ
- マウスの位置をコンソールに表示します。これにより、マウスの現在の位置を確認できます。
全体の動き
- 毎フレームごとに
Update
メソッドが呼ばれます。 - マウスの位置を取得します。
- 画面上のマウスの位置をワールド座標に変換します。
- ゲームオブジェクトのY位置を固定します。
- ゲームオブジェクトの位置を更新して、マウスのX位置に合わせます。
- マウスの位置をコンソールに表示します。
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);
}
}
このスクリプトは、毎フレームごとにマウスカーソルのX座標を取得し、オブジェクトのX座標を更新します。スクリプトを保存したらキューブにアタッチします。
- プロジェクト(Project)ウィンドウで「FollowMouse」スクリプトを見つけます。
- スクリプトをドラッグして、ヒエラルキー(Hierarchy)ウィンドウのキューブオブジェクトにドロップします。
シーンをテストする
スクリプトが正しく機能するか確認しましょう。
- 再生ボタンをクリックしてプレイモードに入ります。
- マウスを動かして、キューブが横方向にのみマウスカーソルに追従することを確認します。
これで完成です!オブジェクトが横方向にのみマウスカーソルに追従するようになりましたね。ぜひ、他のオブジェクトやエフェクトと組み合わせて、より楽しいシーンを作ってみてください。質問があれば、いつでも聞いてくださいね。
おすすめのアセット
Fingers – Touch Gestures for Unityは、Unityで使えるタッチジェスチャー用のアセットです。これを使えば、タップ、スワイプ、ピンチ、回転などのタッチ操作を簡単に実装できます。初心者でも使いやすいように設計されており、サンプルシーンや豊富なドキュメントが用意されています。
主な特徴として、マルチタッチ対応、カスタマイズ可能なジェスチャー、そしてイベントベースのシステムがあります。また、ネイティブな感じで動作するので、アプリやゲームに自然に組み込めます。