【完走目指す】初心者が25日で強くなる Advent Calendar 2022
13日目の記事です。前編です。
なぜ魚釣り
最近魚つってなかったし、ゲームでいいじゃんってなったので作ります。
ゲームならもうあるじゃんとか思う人もいるかもしれませんが、自分で作ることもまたいいのです。なので作ります。
イメージ
1.川の中から魚が見えます。
2.魚に釣り糸が当たったら、釣ります。
3.魚Get!
こんな感じです。ほんとざっくりしてます。
絵を描く
絵心ないですが、許してください
魚
釣りをする場所は、川か海にします。
川、海に使う水を用意します。
水についてはAsset Storeで簡単に取得できますが、せっかくなので自分で作ってみようと思います。
まず、3D Object > Planeを選択。
Planeができました。
次に、マテリアルを用意します。色を付けるやつです。
Projectで、 Create > Material で作れます。
その中のにある、色を水っぽい色に変更します。また、そのすぐ下にあるMetalicとSmoothnessをそれぞれ1にします。
Metalicは金属です。何となくわかります。
Smoothnessは滑らかさです。よくわからないけど、うまくいくのでOK。
できたら、こんな感じになります。ちなみに、Planeの大きさを変えておきました。
海っぽい地平線が見えます。
波を打たせる
穏やかのほうがいいという結論に至ったため、結局使いませんでした。
ちなみに、これをやろうとして一日かかってました。
とりあえず、魚の背景を透明にしました。
魚を動かす
以下のように記述しました
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日目 終わり