概要
本記事では、Unityでオブジェクトを常にプレイヤーの方向に向ける方法を紹介します。
方法と結果
本記事では、カメラ、円柱、パーティクル、テキストという4種類のオブジェクトをプレイヤーの方に向かせることにします。4種類あるといっても書くスクリプトはすべて同じです。先にそのスクリプトについて説明します。
using UnityEngine;
public class DirectionController : MonoBehaviour
{
private GameObject player;
void Start()
{
player = GameObject.Find("ThirdPersonController");
}
void Update()
{
transform.LookAt(player.transform);
}
}
プレイヤーはUnityのアセットStandard Assetsに含まれているThirdPersonControllerを用います。上のスクリプトでポイントなのはたった一つだけ、Updateメソッド内です。このようにLookAtメソッドを書くだけでOKです。
カメラをプレイヤーに向かせる
見やすいように、床にタイルのテクスチャを貼っています。Main Cameraに先ほどのDirectionController.csをアタッチします。
カメラを常にプレイヤーの方に向かせる#Unity pic.twitter.com/5lsF2ZoZPi
— みこし (@Mikoshi_prog) October 3, 2019
円柱をプレイヤーに向かせる
円柱にDirectionController.csと赤いマテリアルをつけています。
円柱をプレイヤーの方に向かせる#Unity pic.twitter.com/78bl5XCJmN
— みこし (@Mikoshi_prog) October 3, 2019
パーティクルをプレイヤーの方に飛ばす
パーティクルは、Start Colorを赤にする以外はデフォルトのままにしてあります。パーティクルにDirectionController.csをつけます。
パーティクルをプレイヤーに向かって飛ばし続ける#Unity pic.twitter.com/yILm8L3YZc
— みこし (@Mikoshi_prog) October 3, 2019
テキストをプレイヤーの方に向ける
Canvasを作ってからその子としてTextを作ります(そうしないとTextが表示されません)。CanvasのRender ModeをWorld Spaceに設定し、DirectionController.csはCanvasにアタッチします。そして、TextのInspectorでRotationをx=0, y=180, z=0にしておきます。y=0のままにしておくと、プレイヤーからテキストを見たときにテキストが裏表逆に見えてしまいます。
テキストをプレイヤーの方に向ける#Unity pic.twitter.com/PbllPrUDSJ
— みこし (@Mikoshi_prog) October 3, 2019