カイジのEカード風カードゲームの作成。Part2.カード配布と選択【Unityゲーム制作】

簡単なカードゲーム作成の第2回目を進めていきます。今回は「カードの配布」と「カードの選択」をしていきます。

はじめに

前回の続きの第2回目です。第1回目は下記から。

ゲーム作成開始

前回は「スクリプトでカードを生成」まで行ったので、その続きから進めていきます。まずは「複数枚のカードを配る」を作成。

カードを配布する位置を指定

カードを配る位置は、画面下の赤枠辺りです。ここが自分のフィールド(手札)の場所です。

まずは自軍のカードフィールドを設定していきます。Canvas配下にCardsという名前で「空のオブジェクトを作成」、位置を下の方にします。

Operatorのスクリプトを変更し、Canvas配下からCards配下に生成するように変更。ついでにカードの位置も指定しておきます。

Operatorの変数にセットするオブジェクトもCanvasからCardsに変更。

これで一度実行。無事、Cards配下にCardが生成されて画面に表示されればOK

テキストの変更

次にカード番号を変更します。スクリプトに1文追加するだけでOK

後は複数枚カードを配るようにスクリプトを変更していきます。ざっくりと下記の感じ。

  1. カード配布を関数化
  2. パラメータでカード番号とカード位置を渡す
  3. スタート関数でカードの枚数分、カード配布関数を呼び出し

スクリプトを下記のように変更。実際はもっと綺麗にした方がいいけど、とりあえずどこで何をしているか一目で分かるように。

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

public class Operator : MonoBehaviour
{
    public GameObject CardPrefab;
    public GameObject Cards;

    private void Start()
    {
        dealCards(1,-500);
        dealCards(2, -250);
        dealCards(2, 0);
        dealCards(2, 250);
        dealCards(3, 500);
    }
    void dealCards(int iNumber,float fPosition)
    {
        GameObject prefab = (GameObject)Instantiate(CardPrefab);
        prefab.transform.Find("Text").GetComponent<Text>().text = iNumber.ToString();
        prefab.transform.SetParent(Cards.transform, false);
        prefab.transform.localPosition = new Vector3(fPosition, 0, 0);
    }

}

スクリプトを変更したら実行。画面にカードが5枚配られて、良い感じの場所にカードがあればOK

カードの選択

次に「カードを選択した時にイベントが動く」ようにします。Cardのプレハブに「2Dボックスコライダー」と「イベントトリガー」を追加。

クリックした時に動くスクリプトを作成していきます。Cardプレハブに「新しいスクリプトを追加」。名前はCardScriptにでもしておきます。

このスクリプト内で色々おこないますが、まずは「クリックしたのはどのカードか」を明確にしていきます。下記のようにCardScriptを作成。

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

public class CardScript : MonoBehaviour
{

    public void ChoiceCard()
    {
        string strNum = this.transform.Find("Text").GetComponent<Text>().text;
        Debug.Log("Number"+strNum);
    }
}

選択したカードのカード番号を取得し、確認のためDebugログで出力しているだけです。

イベントトリガーにPointerClickを追加し、ChoiceCard関数を呼び出すようにします。

実際に実行して、選択したカードによってコンソールに表示される「カード番号」が変更していればOK

今回で、「カード複数枚配布」と「カードの選択」まで完成。

タイトルとURLをコピーしました