LoginSignup
2
0

More than 1 year has passed since last update.

魚釣りを作る 前編

Last updated at Posted at 2022-12-13

【完走目指す】初心者が25日で強くなる Advent Calendar 2022
13日目の記事です。前編です。

なぜ魚釣り

最近魚つってなかったし、ゲームでいいじゃんってなったので作ります。
ゲームならもうあるじゃんとか思う人もいるかもしれませんが、自分で作ることもまたいいのです。なので作ります。

イメージ 

1.川の中から魚が見えます。 
2.魚に釣り糸が当たったら、釣ります。 
3.魚Get!
こんな感じです。ほんとざっくりしてます。

絵を描く

絵心ないですが、許してください

魚.png
魚2.png
釣りをする場所は、川か海にします。 
川、海に使う水を用意します。
水についてはAsset Storeで簡単に取得できますが、せっかくなので自分で作ってみようと思います。
まず、3D Object > Planeを選択。
image.png
Planeができました。
スクリーンショット_20221213_224757.png
次に、マテリアルを用意します。色を付けるやつです。
Projectで、 Create > Material で作れます。
その中のにある、色を水っぽい色に変更します。また、そのすぐ下にあるMetalicとSmoothnessをそれぞれ1にします。
Metalicは金属です。何となくわかります。
Smoothnessは滑らかさです。よくわからないけど、うまくいくのでOK。
スクリーンショット_20221213_225256.png
できたら、こんな感じになります。ちなみに、Planeの大きさを変えておきました。
海っぽい地平線が見えます。
スクリーンショット_20221213_225428.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日目 終わり

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0