魚釣りを作る　前編

[【完走目指す】初心者が25日で強くなる Advent Calendar 2022](https://qiita.com/advent-calendar/2022/aruhitoganbaru)
13日目の記事です。前編です。
# なぜ魚釣り
最近魚つってなかったし、ゲームでいいじゃんってなったので作ります。
ゲームならもうあるじゃんとか思う人もいるかもしれませんが、自分で作ることもまたいいのです。なので作ります。
# イメージ　
1.川の中から魚が見えます。　
2.魚に釣り糸が当たったら、釣ります。　
3.魚Get!
こんな感じです。ほんとざっくりしてます。
# 絵を描く
絵心ないですが、許してください
魚
![魚.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961125/f1bf5d4a-7ddb-c997-1a27-4da0ebd20310.png)
![魚２.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961125/d02a9fdc-8fd5-0385-afaa-e5d282826c4c.png)
釣りをする場所は、川か海にします。　
川、海に使う水を用意します。
水についてはAsset Storeで簡単に取得できますが、せっかくなので自分で作ってみようと思います。
まず、3D Object > Planeを選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961125/94650c2b-637a-d79e-7931-7ee217082cba.png)
Planeができました。
![スクリーンショット_20221213_224757.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961125/43c7c3d7-7884-1325-26c8-e9bea7488bea.png)
次に、マテリアルを用意します。色を付けるやつです。
Projectで、　Create > Material　で作れます。
その中のにある、色を水っぽい色に変更します。また、そのすぐ下にあるMetalicとSmoothnessをそれぞれ１にします。
Metalicは金属です。何となくわかります。
Smoothnessは滑らかさです。よくわからないけど、うまくいくのでOK。
![スクリーンショット_20221213_225256.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961125/50f9146a-a288-8468-602d-a591074b1e64.png)
できたら、こんな感じになります。ちなみに、Planeの大きさを変えておきました。
海っぽい地平線が見えます。
![スクリーンショット_20221213_225428.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961125/046cdebc-121c-588c-52f2-fae2c9fda87e.png)
# 波を打たせる
穏やかのほうがいいという結論に至ったため、結局使いませんでした。
ちなみに、これをやろうとして一日かかってました。
とりあえず、魚の背景を透明にしました。

## 魚を動かす
以下のように記述しました
```
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Sakana : MonoBehaviour
{
    public GameObject Sakana1;
    public GameObject Sakana2;
    public int S1X;
    public int S1Z;
    public int S2X;
    public int S2Z;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if (S1X < 500)
        {
            S1X = S1X + 1;
        }
        if (S1X >= 400)
        {
            Sakana1.transform.position = new Vector3(-400, 0, S1Z);

        }
        if (S1Z < 500)
        {
            S1Z = S1X + 1;
        }
        if (S1Z >= 400)
        {
            Sakana1.transform.position = new Vector3(S1X, 0, -400);

        }
        if (S2X < 500)
        {
            S2X = S1X + 1;
        }
        if (S2X >= 400)
        {
            Sakana2.transform.position = new Vector3(-300,0,S2Z);

        }
        if (S2Z < 500)
        {
            S2Z = S1X + 1;
        }
        if (S2Z >= 400)
        {
            Sakana2.transform.position = new Vector3(S2X, 0, -400);

        }

    }
}

```
# 結果
ちゃんと動かない。瞬間移動しちゃう。
作り直します。
```
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Sakana : MonoBehaviour
{
    public int D;
    public GameObject[] Skn;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {for(; D < 30; D++)
        {
            Skn[D].transform.position=new Vector3(Random.Range(0, 400), 0, Random.Range(-400, 30));
            

        }

        this.transform.Translate(Time.deltaTime, 0, Time.deltaTime * 7f);
    }
    void OnCollisionEnter(Collision collision)
    {
        this.transform.position = new Vector3(200, 0, -200);
    }
}


```
これで動いてほしい。これで動かなかったら、明日に回します。
もしかしたら、魚つらないようにするかもしれません。
# 結果
動かなかった。悲しい。
魚が、一切動いてません。
今日はここまでです。
明日、完成させます。
# まとめ
マテリアルの仕様を学んだ。
魚は、動かない。
もう魚つるのやめようと思います。
13日目　終わり