トマシープが学ぶ

Unity/VR好きのミーハー初心者 記事内容は自分用のメモ。何も求めないで

【unity1week】WiFiがつながる場所を探すゲーム【お題:つながる】

急遽作り松

unityroom.com

こちらのツイートを見てまんまパクることにしました。

ありがとうございます。 

できたのがこちら

youtu.be

仕様

2D

矢印キーで移動

WiFiスポットはランダムに表れて消える。

できるだけ長い時間WiFiスポットに滞在してポイントを稼ぐ。

スポットに入っていると1秒につき10点もらえる。

スポットにいると顔が元気になる。(spriteを変える)

時間は30秒

動く

ただキャラを画面内でのみ動かしたいだけなんだけど、ぴったり当てはまるスクリプトが見つからなかったから組み合わせた。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

public class ugoku : MonoBehaviour
{
    private Vector2 player_pos;
    public float speed = 15.0f;

    void Update()
    {
        float x = Input.GetAxisRaw("Horizontal");
        float y = Input.GetAxisRaw("Vertical");
     
        player_pos  += new Vector2(x, y)*speed * Time.deltaTime; //プレイヤーの位置を取得

        player_pos.x = Mathf.Clamp(player_pos.x, -7.5f, 7.5f); //x位置が常に範囲内か監視
        player_pos.y = Mathf.Clamp(player_pos.y, -4.0f, 4.0f); //x位置が常に範囲内か監視
        this.transform.position = new Vector2(player_pos.x, player_pos.y); //範囲内であれば常にその位置がそのまま入る
    }
}

www.ipentec.com

【Unity】2D用の、キーボードで上下左右動かせるスクリプト · GitHub

qiita.com

unity3d.com

WiFiスポット出現

ランダムに出現させる。

イラスト自分で描いた。

f:id:bibinbaleo:20190314162801p:plain

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class wifi : MonoBehaviour
{
    private float timeleft;
    private Vector2 wifi_pos;

    void Update()
    { timeleft -= Time.deltaTime;
        if (timeleft <= 0.0)
        {
            wifi_pos.x = Random.Range(-7.0f, 7.0f);
            wifi_pos.y = Random.Range(-4.0f, 4.0f);
            timeleft = 2.0f;
            this.gameObject.transform.position= new Vector2(wifi_pos.x, wifi_pos.y);
        }
    }
}

freesworder.net

侵入判定

当たり判定は最初コライダーでしようかと思ったけどめんどくさいので伝家の宝刀である距離判定にします。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class atari : MonoBehaviour
{
    SpriteRenderer MainSpriteRenderer;
    public GameObject player;
    public GameObject wifi;
    public Text point_text;
    public Sprite genki;
    public Sprite turai;
    public AudioSource wifion;
    public AudioSource wifinasi;

    float point = 0.0f;
    // Start is called before the first frame update
    void Start()
    {
        MainSpriteRenderer = player.GetComponent<SpriteRenderer>();
    }

    // Update is called once per frame
    void Update()
    {
        Vector3 Apos = player.transform.position;
        Vector3 Bpos = wifi.transform.position;
        float dis = Vector3.Distance(Apos, Bpos);
        if (dis < 2.0f)
        {
            Debug.Log("近づいた");
            wifion.Pause();
            wifinasi.UnPause();
            point =point+(8-dis)*Time.deltaTime;
            int poi = (int)point;
            point_text.text= "元気"+point.ToString("f0") +"%";
            MainSpriteRenderer.sprite =genki;
        }
        else
        {
            wifion.UnPause();
            wifinasi.Pause();
            MainSpriteRenderer.sprite = turai;
        }

        if (point > 100)
        {
            Debug.Log("クリア");
            SceneManager.LoadScene("ED");
        }
    }
}


スプライト変更

こちら

qiita.com

街の地図

画面の背景に町が欲しかった。ちょうどいいイラストがあった!!!

www.ac-illust.com

f:id:bibinbaleo:20190314162218p:plain

最初の画面はこんな感じ。かわいい。

 

f:id:bibinbaleo:20190314162226p:plain

クリア画面。この図をどうしても使いたかった。

f:id:bibinbaleo:20190314162222p:plain

wifiスポット内では音楽が流れて、スポットに入っていないとホワイトノイズが流れるようにしました。

何かをしている間、音が流れるというのは、PlayOnAwakeにしておいて

止まってほしい間は

AudioSource.Pause();

で、流れててほしいときは

AudioSource.UnPause();

にした。

qiita.com

歌ものを使ってみたくなったので初めて使った。

こちらとてもキャッチで素敵な歌。

dova-s.jp

1回聞いただけで割と覚えれる。

最後に

楽しかったです。

日曜日に公開。

https://unityroom.com/games/wifispot