簡単なカードゲームの作成(カイジのEカード風)。Part2.カード配布と選択|Unityゲーム制作

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

はじめに

前回の続きのPart2を作成していきます。Part1は下記から。

Part1の前回は仮でカードの生成を作成しました。Part2の今回はカードの配布とカードをクリックで選択を実装していきます。

ゲーム作成開始

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

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

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

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

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

using UnityEngine;

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

    private void Start()
    {
        GameObject objCard = (GameObject)Instantiate(CardPrefab);
        objCard.transform.SetParent(Cards.transform, false);
    }
}

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

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

テキストの変更

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

using UnityEngine;
using UnityEngine.UI;

public class Operator : MonoBehaviour
{
    public GameObject CardPrefab;
    public GameObject Cards;
    private void Start()
    {
        GameObject objCard = (GameObject)Instantiate(CardPrefab);
        objCard.transform.SetParent(Cards.transform, false);
        objCard.transform.Find("Text").GetComponent<Text>().text = "1";
    }
}

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

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

カードの初期配布

スクリプトを下記のように変更。とりあえず何をしているか分かるような形にしてあります。

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 number,float position)
    {
        GameObject objCard = (GameObject)Instantiate(CardPrefab);
        objCard.transform.SetParent(Cards.transform, false);
        objCard.transform.Find("Text").GetComponent<Text>().text = number.ToString();
        objCard.transform.localPosition = new Vector3(position, 50, 0);
    }
}

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

カードの選択

次に「カードを選択した時にイベントが動く」ようにします。Cardプレハブに「BoxCollider 2D」と「EventTrigger」を追加します。

スクリプトの作成

クリックした時に動くスクリプトを作成していきます。CardScriptという名前で新規作成します。

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

using UnityEngine;
using UnityEngine.UI;

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

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

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

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

今回で、「カードの初期配布」と「カードの選択」まで完成です。

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