Unityでオブジェクトを常にプレイヤーの方向に向かせる

# 概要
本記事では、Unityでオブジェクトを常にプレイヤーの方向に向ける方法を紹介します。

# 方法と結果
本記事では、カメラ、円柱、パーティクル、テキストという4種類のオブジェクトをプレイヤーの方に向かせることにします。4種類あるといっても書くスクリプトはすべて同じです。先にそのスクリプトについて説明します。

```C#:DirectionController.cs
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メソッド内です。このように<b>LookAtメソッド</b>を書くだけでOKです。

### カメラをプレイヤーに向かせる
<img width="629" alt="カメラ.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498199/b8d0330c-94e6-d25e-f7c7-9293b2b2608e.png">
見やすいように、床にタイルのテクスチャを貼っています。Main Cameraに先ほどのDirectionController.csをアタッチします。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">カメラを常にプレイヤーの方に向かせる<a href="https://twitter.com/hashtag/Unity?src=hash&amp;ref_src=twsrc%5Etfw">#Unity</a> <a href="https://t.co/5lsF2ZoZPi">pic.twitter.com/5lsF2ZoZPi</a></p>&mdash; みこし (@Mikoshi_prog) <a href="https://twitter.com/Mikoshi_prog/status/1179746791706640384?ref_src=twsrc%5Etfw">October 3, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

### 円柱をプレイヤーに向かせる
<img width="627" alt="円柱.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498199/b75b2108-29e1-2a10-355c-2ba9acb8c830.png">
円柱にDirectionController.csと赤いマテリアルをつけています。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">円柱をプレイヤーの方に向かせる<a href="https://twitter.com/hashtag/Unity?src=hash&amp;ref_src=twsrc%5Etfw">#Unity</a> <a href="https://t.co/78bl5XCJmN">pic.twitter.com/78bl5XCJmN</a></p>&mdash; みこし (@Mikoshi_prog) <a href="https://twitter.com/Mikoshi_prog/status/1179763075253014528?ref_src=twsrc%5Etfw">October 3, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

### パーティクルをプレイヤーの方に飛ばす
<img width="627" alt="パーティクル.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498199/4d91262e-5717-b5ad-b4ed-2cb7e54c2fd5.png">
パーティクルは、Start Colorを赤にする以外はデフォルトのままにしてあります。パーティクルにDirectionController.csをつけます。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">パーティクルをプレイヤーに向かって飛ばし続ける<a href="https://twitter.com/hashtag/Unity?src=hash&amp;ref_src=twsrc%5Etfw">#Unity</a> <a href="https://t.co/yILm8L3YZc">pic.twitter.com/yILm8L3YZc</a></p>&mdash; みこし (@Mikoshi_prog) <a href="https://twitter.com/Mikoshi_prog/status/1179770674518396928?ref_src=twsrc%5Etfw">October 3, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

### テキストをプレイヤーの方に向ける
<img width="959" alt="テキスト.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498199/e3196c34-0411-404e-8976-40e6227cbcda.png">
Canvasを作ってからその子としてTextを作ります(そうしないとTextが表示されません)。CanvasのRender Modeを<b>World Space</b>に設定し、DirectionController.csはCanvasにアタッチします。そして、TextのInspectorでRotationをx=0, <b>y=180</b>, z=0にしておきます。y=0のままにしておくと、プレイヤーからテキストを見たときにテキストが裏表逆に見えてしまいます。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">テキストをプレイヤーの方に向ける<a href="https://twitter.com/hashtag/Unity?src=hash&amp;ref_src=twsrc%5Etfw">#Unity</a> <a href="https://t.co/PbllPrUDSJ">pic.twitter.com/PbllPrUDSJ</a></p>&mdash; みこし (@Mikoshi_prog) <a href="https://twitter.com/Mikoshi_prog/status/1179772595983589379?ref_src=twsrc%5Etfw">October 3, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>