---
# System prepended metadata

title: 作業記録（ナビゲーション制作）

---

# 作業記録（ナビゲーション制作）

## 12/7
ナビゲーションマップを作成する方法を学習した。

敵や味方の位置を示すオブジェクトだけを表示させる。
このオブジェクトをポインタとする。
上空からポインタを表示する。
* 「作成」→「レンダーテクスチャ」を選択して新しいRender Textureを作成
* canvasを作成し、Navigationと名前を付ける
* カメラを作成し、プレイヤー上空に配置
* TargetTextureを作成したテクスチャに設定
* RawImageを作成
* add componentからMaskを選択
* この子オブジェクトとして、RawImageを作成
* Textureを作成済みのテクスチャに設定（カメラに設定したものと同じ）

メインカメラにポイントを見えなくする。
* 新規Layerを作成、navigationとする
* メインカメラのCulling Maskでnavigationのチェックを外す

作ったカメラをNavigationCameraとする。

## 12/9
建物をナビゲーションマップに投影した。
ポイントが建物の影二ならないように設定した。
* 建物に設定されているレイヤーをNavigationCameraで選択する
* ポイントのインスペクターからReceiveShadouwsのチェックを外す

NavigationCameraをプレイヤーに追尾させる
* NavCameraControlスクリプトを作成
```
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NavCameraControl : MonoBehaviour
{
    private GameObject Player;
    Vector3 pos;
    // Start is called before the first frame update
    void Start()
    {
        Player = GameObject.Find("Player");
    }

    // Update is called once per frame
    void Update()
    {
        pos = Player.transform.position;
        transform.position = new Vector3(pos.x,100, pos.z);
    }
}

```

* 建物を別レイヤーに分ける（buildingレイヤ―を作成）
* NavigationCameraにポイントと建物、地面だけにする

プレイヤーのポイントを矢印に変更する。（向いている方向がわかりやすいように）
* 矢印の透過画像をplayerの子オブジェクトに配置
* 画像を入れているcanvasをワールドポジション設定に変更し、プレイヤーの位置に移動
* 画像のレイヤーをpointに変更する（メインカメラに映らないレイヤーに設定）

# 12/14(水)
ボスの方向を指し示す矢印を作成する。
* 矢印の画像をRowImageでプレイヤー前方に設置
* propertiesからPivotのxを-0.7に設定
上記の作業は回転軸をずらし、プレイヤーを示すポイントを中心に回転するように設定している。
## メモ
今回は角度を求めるところまで出来たが、矢印を回転させるところで角度の加算を毎フレーム行ってしまった。
角度の指定方法などを調べる必要がある。

# 12/23(金)
ボスの方向を示す矢印をPlayerの子オブジェクトから外した。
Playerのpositionをコピーするスクリプトで同じ位置に表示されるように設定した。
* 3Dオブジェクトを作成し、このオブジェクトの子オブジェクトに設定
* 3Dオブジェクトに以下のスクリプトを取り付ける
```
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ArrowRot : MonoBehaviour
{
    public GameObject target;
    public GameObject arrow;
    public GameObject player;

    void Update()
    {
        Quaternion lookRotation = Quaternion.LookRotation(target.transform.position - transform.position, Vector3.up);

        lookRotation.z = 0;
        lookRotation.x = 0;

        arrow.transform.rotation = Quaternion.Lerp(transform.rotation, lookRotation, 0.1f);

    }
}

```
## メモ
3Dオブジェクトなら正常に動作する。しかし、canvasなどの2Dのものは正常に動作しなかった。

# 1/18(水)
マップの拡大表示機能を実装するための学習を行った。
* 大きいマップを準備しておいて、キー入力でアクティブにすることで拡大表示するように見せる
* 非アクティブ状態のオブジェクトはGamgeObject.Find()で見つけることが出来ないので、public宣言を使用する

# 1/20(金)
マップの拡大表示機能で表示されるマップ範囲を拡大した。
もう一つマップ表示のためのカメラを追加し、焦点距離を調整することで実装した。
プレイヤーがボスに一定以上近づくと、矢印を削除するようにした。




# 今後の予定
~~ボスの方向を示す~~
~~ボスの近くに来ると矢印を削除する~~
~~ナビゲーションマップの拡大表示~~