トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

【unity1week】じゃんけんに負けるゲーム【お題:逆】

今回のお題は「逆」

 最近は皆勤賞取ることだけが目的になっていて、すごい適当なものが多いですが、今回もそんな感じで~す

前回

bibinbaleo.hatenablog.com

 考える

じゃんけんに負けるゲームぐらいしか思いつかなかった。

あとは出勤電車の逆方向に行って自然を体感するとか。どうやってゲーム化したらいいか分からない。

これぐらいの魔作をつくりたいものだ

 

ForkとGithub

毎回Unity1weekでは何か一つ新しい要素にチャレンジすることを目標にしている。

今回はゲーム内容でチャレンジな部分が思いつかないので、「GithubにUnityProjectを公開する」ということにチャレンジします!

https://github.com/bibinba/Lost-with-rock-paper-scissors

家ではForkというgitクライアントを使っている。久しぶりに使ったけど、エラー出たので別記事で

bibinbaleo.hatenablog.com

リポジトリ

github.com

作る

素材

githubに公開するので、再配布OKな素材しか使えない;;

この鳥獣戯画イラスト使いたかったけど、さすがに再配布はダメだった

chojugiga.com

自分で書いた。ペンタブ使った。

f:id:bibinbaleo:20200226143737p:plainf:id:bibinbaleo:20200226155605p:plainf:id:bibinbaleo:20200226143745p:plain

 

↓見えないと思うけど白い〇です。地味に使える。

f:id:bibinbaleo:20200226143740p:plain

自由に使ってください

f:id:bibinbaleo:20200226155144p:plain

ほかの再配布ダメな素材とかはThirdPartyというフォルダ作ってgitignoreで無視するようにした。

# ThirdParty
Assets/Plugins/UniRx
Assets/Plugins/UniRx.meta
Assets/ThirdParty
Assets/ThirdParty.meta

BGM

dova-s.jp

前と違うランダム整数を出す

連続して同じ手が出ないようにする

        int randint = Random.Range(1, 4);
        
        while (randint== prevint)
        {
            randint = Random.Range(1, 4);
        }
        prevint = randint;

bbs.wankuma.com

スクリプト

一つのスクリプトでできた!

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

public class GameManager : MonoBehaviour
{
    [SerializeField] private Sprite Sprite_Gu;
    [SerializeField] private Sprite Sprite_Tyoki;
    [SerializeField] private Sprite Sprite_Pa;

    [SerializeField] private Image Image_Hand;

    [SerializeField] private Button Button_Gu;
    [SerializeField] private Button Button_Tyoki;
    [SerializeField] private Button Button_Pa;

    [SerializeField] private AudioSource Audio_Correct;
    [SerializeField] private AudioSource Audio_InCorrect;

    [SerializeField] private Text Text_Point;

    [SerializeField] private GameObject Canvas_End;

    private int Point = 0;
    private int prevint = 0;
    void Start()
    {
        SetRandomHandSprite();
        Text_Point.text = "POINT:" + Point + "/10";
        Button_Gu.onClick.AsObservable().Subscribe((_) => OnClickedHand(Sprite_Pa));
        Button_Tyoki.onClick.AsObservable().Subscribe((_) => OnClickedHand(Sprite_Gu));
        Button_Pa.onClick.AsObservable().Subscribe((_) => OnClickedHand(Sprite_Tyoki));
    }


    void OnClickedHand(Sprite sprite_lose)
    {

        if (Image_Hand.sprite == sprite_lose)
        {
            Correct();
        }
        else
        {
            InCorrect();
        }
        SetRandomHandSprite();
    }


    void Correct()
    {

        Audio_Correct.Play();
        Point++;
        Text_Point.text = "POINT:" + Point + "/10";
        
        if (Point == 10)
        {
            Canvas_End.SetActive(true);
        }
    }

    void InCorrect()
    {

        Audio_InCorrect.Play();
        Point--;
        Text_Point.text = "POINT:" + Point + "/10";

    }

    void SetRandomHandSprite()
    {
        int randint = Random.Range(1, 4);
        
        while (randint== prevint)
        {
            randint = Random.Range(1, 4);
        }
        prevint = randint;

        if (randint == 1)
        {            
            Image_Hand.sprite = Sprite_Gu;
        }
        else if (randint == 2)
        {
            Image_Hand.sprite = Sprite_Tyoki;
        }
        else
        {
            Image_Hand.sprite = Sprite_Pa;
        }
    }

    public void ReStart()
    {
       
        SceneManager.LoadScene("Game");
    }
}

今回割とまともなスクリプト書いた!  

最後に

 公開されたらここから遊べます。

https://unityroom.com/games/lost-with-rock-paper-scissors

作ってブログ書いてUnityRoomにあげてgithub整理して全部で3時間ちょっとぐらいかな?

 

追記

遊んでくださってる!

25:00~

youtu.be