社畜主婦の挑戦

何にでもとりあえず挑戦する多趣味なアラサーのブログです。保育園児の子育て中。子育て・家事・投資・懸賞・プログラミング・将棋・イラストなど。

【コードのみ】GuScript

プログラミング初心者がunityでカードゲームを作ってみたい!【その6】〜u GUIで勝敗判定表示 - 社畜主婦の挑戦スクリプトの中身です。

 

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI; // UIを使う際は記載する
  5.  
  6. public class GuScript : MonoBehaviour
  7. {
  8.     public Sprite cardBack;
  9.     // アウトレット接続(インスペクタ上で設定)するcardBackという名前のスプライトの宣言
  10.     public Sprite[] faces;
  11.     // アウトレット接続するfacesという名前のスプライトの配列の宣言
  12.     public GameObject Card;
  13.     // アウトレット接続するCardという名前のゲームオブジェクトの宣言
  14.     public bool show;
  15.     // アウトレット設定するshowという名前のブール値の宣言(初期値はfalse)
  16.  
  17.     public AnimationCurve scaleCurve;
  18.     // アウトレット接続するscaleCurveという名前のアニメーションカーブの宣言
  19.     public float duration = 0.5f;
  20.     // アウトレット接続するdurationという名前の数値の宣言(初期値は0.5)
  21.  
  22.     public Text Judgment;
  23.     // アウトレット接続するJudgmentという名前のテキストの宣言
  24.     public GameObject Reset;
  25.     // アウトレット接続するResetという名前のボタンの宣言
  26.  
  27.     public GameObject Tyoki;
  28.     // アウトレット接続するTyokiという名前のゲームオブジェクトの宣言
  29.     public GameObject Pa;
  30.     // アウトレット接続するPaという名前のゲームオブジェクトの宣言
  31.  
  32.     SpriteRenderer spriteRenderer;
  33.     // spriteRendererという名前のスプライトの宣言
  34.  
  35.    
  36.     void Awake()
  37.     {
  38.         spriteRenderer = Card.GetComponent<SpriteRenderer>();
  39.         // spriteRendererにCardのスプライトを代入
  40.     }
  41.  
  42.     // イベントトリガーに設定するために、publicの関数を作成
  43.     IEnumerator ToggleFace()
  44.     {
  45.  
  46.  
  47.         // もしカードが裏面(初期値)だったら
  48.         if (show == false)
  49.         {
  50.             Tyoki.SetActive(false);
  51.             // チョキを非表示
  52.             Pa.SetActive(false);
  53.             // パーを非表示
  54.             Sprite newSprite = faces[Random.Range(0, faces.Length)];
  55.             // newSpriteという名前のスプライトを宣言してfacesのカードをランダムに代入する
  56.             float time = 0f;
  57.             // timeという名前の数値の宣言(初期値は0)
  58.  
  59.             while(time <= 1f) // timeが1以下の場合は以下を繰り返す
  60.             {
  61.                 float scale = scaleCurve.Evaluate(time);
  62.                 // scaleという名前の数値を宣言してcaleCurveのEvaluate(数値)を代入する
  63.                 time = time + Time.deltaTime / duration;
  64.                 // timeに前フレームからの経過時間を0.5で割った数値を代入する
  65.                 Vector3 localScale = Card.transform.localScale;
  66.                 // localScaleという名前のVector3(位置情報)にCardオブジェクトの位置情報を代入する
  67.                 localScale.x = scale;
  68.                 // localScaleのx軸の値にscaleの値を代入する
  69.                 Card.transform.localScale = localScale;
  70.                 // Cardの位置情報にlocalScaleの値を代入する
  71.                 if (time >= 0.5f) // timeが0.5以上の場合は
  72.                 {
  73.                     spriteRenderer.sprite = newSprite;
  74.                     // CardのスプライトにnewSpriteを代入する
  75.                 }
  76.  
  77.                 yield return new WaitForFixedUpdate();
  78.                 // ここまでの結果を返して一定時間処理を停止する
  79.             }
  80.  
  81.             show = true;
  82.             // 再度グーをタップした時にcardが変化しないように、showをtrueにしておく
  83.             
  84.  
  85.             if(spriteRenderer.sprite == faces[0]) // もしCardのスプライトがfaces[0](グー)なら
  86.             {
  87.                 Judgment.GetComponent<Text>().text = "あいこだよ!";
  88.                 // Judgmentのテキストに「あいこだよ!」と表示
  89.             }
  90.             else if(spriteRenderer.sprite == faces[1]) // もしCardのスプライトがfaces[1](チョキ)なら
  91.             {
  92.                 Judgment.GetComponent<Text>().text = "あなたのかち!";
  93.                 // Judgmentのテキストに「あなたのかち!」と表示
  94.             }
  95.             else // それ以外(パー)なら
  96.             {
  97.                 Judgment.GetComponent<Text>().text = "あなたのまけ!";
  98.                 // Judgmentのテキストに「あなたのまけ!」と表示
  99.             }
  100.  
  101.             Reset.SetActive(true);
  102.         }
  103.  
  104.     }
  105.  
  106.     public void Flip()
  107.     {
  108.         StartCoroutine(ToggleFace());
  109.         // ToggleFace()のコルーチンを実行する
  110.     }
  111.  
  112. }

 

【スポンサーリンク】