UnityProgram日記01:追従カメラ編~久しぶりにプログラム書いたら不安になった話~

C#を久々(1年ちょっと)に書いてみた。

はい、久しぶりにプログラムを書いてみました。
そしたらなんと!全く分からなくなっているではありませんか!

UnityのC#を使えると思っていたのに追従カメラすら書けなくなっている始末。
怖い!できることができなくなっている恐怖!
これが私を突き動かしました。

はい、今後は覚書記事を書いていきたいと思います。
あと、初心者向けーとかいってコードの汚染がひどい。
カメラの追従?簡単やろー!

そう思って調べたらノーコードばっかり引っかかる。
もう泣きそう。というか思い出した。
半泣きになって海外の質問版覗きに言った覚えすらある。

書いて保存しておけばいつか資産になると信じて
書き残しておきます。

 

カメラの追従コード

はい、では書いていきます。

public class NewCamera : MonoBehaviour
{
    public GameObject target_obj; //ターゲット用
    public float radius = 15.0f;
    public float cam_height = 8;
    public float angle = 0.0f;
    public float angle_v, angle_h;
    float distance = 1.0f;

    // Use this for initialization
    void Start ()
    {
    }
    
    // Update is called once per frame
    void Update ()
    {
        float speed = 1.5f;
        Vector3 pos = target_obj.transform.position;

        angle_h = Input.GetAxisRaw("Horizontal");
        angle_v = Input.GetAxisRaw("Vertical");

        Vector3 rot_dir = Quaternion.Euler(angle_v, angle_h, 0f) * Vector3.back * distance;
        Vector3 target_positon = target_obj.transform.position + Vector3.up * 3.0f - target_obj.transform.forward * 7.0f;
        this.transform.position = (target_positon + radius * rot_dir);

        //カメラをターゲットの方へ向かせる
        transform.LookAt(pos);
    }
}

はい、やってることは簡単。
・オブジェクトのターゲットを検索と取得。
・手に入れた情報から上に3後ろに7ずらした位置を作る。
・Rotを計算する。アングルはGetAxisRawで取得。
この時、後ろ向きに法線をかけ、距離を書けることで調整できるように改変。
・次にターゲットのポジションと円範囲を掛けてあげる
・最後にターゲットを見つめるコードを一行書いて完成。

 

こんな簡単なコードすら思いつけなくなっていたので
しばらくリハビリかねてこういう記事書いていきます。
まあバックアップも兼ねてます。

外部、内部、オンラインストレージ共々全て壊れたことがあるので。
(オンラインはデータのアップ不備こちらのミス)

勉強と思い出しを兼ねて。記事投稿。