今回のお題は「逆」
最近は皆勤賞取ることだけが目的になっていて、すごい適当なものが多いですが、今回もそんな感じで~す
前回
bibinbaleo.hatenablog.com
考える
じゃんけんに負けるゲームぐらいしか思いつかなかった。
あとは出勤電車の逆方向に行って自然を体感するとか。どうやってゲーム化したらいいか分からない。
これぐらいの魔作をつくりたいものだ
毎回Unity1weekでは何か一つ新しい要素にチャレンジすることを目標にしている。
今回はゲーム内容でチャレンジな部分が思いつかないので、「GithubにUnityProjectを公開する」ということにチャレンジします!
https://github.com/bibinba/Lost-with-rock-paper-scissors
家ではForkというgitクライアントを使っている。久しぶりに使ったけど、エラー出たので別記事で
bibinbaleo.hatenablog.com
リポジトリ
github.com
作る
素材
githubに公開するので、再配布OKな素材しか使えない;;
この鳥獣戯画イラスト使いたかったけど、さすがに再配布はダメだった
chojugiga.com
自分で書いた。ペンタブ使った。



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

自由に使ってください

ほかの再配布ダメな素材とかは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