カイジのEカード風カードゲームの作成。Part4.対戦相手のカードをランダムに選択【Unityゲーム制作】

簡単なカードゲーム作成の第4回目を進めていきます。今回は「対戦相手(敵)のカードをランダムに選択」するのを進めていきます。

はじめに

今回は第4回目です。第1回目は下記から。

ゲーム作成開始

前回は「相手(敵)のカードをセットする」ところまで実装しました。今回は敵カードが「ランダムで選択される」のを実装していきます。

カードをランダムに選ぶ

現在の開始画面は下記のような感じです。

「OPEN」の位置をもっと右にずらすので、位置Xを800に変更しておきます。

今回、実装するイメージとしては上に配置された敵カードから「ランダムに1枚選択して場に出す」というものです。

実験的にスタートで実装

まずは敵カードを一括で管理する「Emcardsオブジェクト」に新規でスクリプトを追加します。名前は「Enemy」としておきます。

追加したスクリプトを下記のように変更。「敵陣地にあるカードをリスト化」、「ランダムでカードを選んで位置を変更(場に出す)」という感じですね。まずはStart内に実装します。

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

public class Enemy : MonoBehaviour
{
    List<GameObject> EmCardlist = new List<GameObject>();

    void Start()
    {
        foreach (Transform child in transform)
        {
            EmCardlist.Add(child.gameObject);
        }
        int r = Random.Range(0, EmCardlist.Count - 1);
        EmCardlist[r].transform.localPosition = new Vector3(400, -400, 0);
    }
}

これで一度実行。ランダムにカードが選ばれて、場に出ていればOK。

補足:スクリプトの実行順序

今回のように動作確認でStartで実行してみると、うまく動かないことがあります。

理由は簡単で、敵カードを「別スクリプトのStartで生成」しているからです。この場合、「カード生成のスクリプト」を実行した後に、「カード選択のスクリプト」を実行するように順番を指定してあげる必要があります。

「編集」から「プロジェクトの設定」を選びます。

「スクリプト実行順序」を選択。「+」からスクリプトを追加します。数値が低い方から実行されるので、「カード生成」→「カード選択」となるようにセットしておきます。

これで実行してみて「カードがランダムに自動で選択」されていたらOK。

ボタンを押したらに変更

次に、この「ランダムにカードが選ばれる」というのを、Startではなく、ボタンを押してから動くように変更します。StartをEnemyCardSelectに変更。中身はそのまま。

「Operator」のスクリプトに「OpenCard」という新規の関数を追加。この中でEnemyCardSelectを実行するようにします。

この「OpenCard」は「OPENオブジェクト」のクリック時の動作に追加。

これで一回実行してみます。OPENボタンを押した時に「敵のカードが自動で選択され、場に提出」されればOK。

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