カイジのEカード風カードゲームの作成。Part1.カードの自動生成【Unityゲーム制作】

今回はUnityで簡単なカードゲームを作成していきます。初心者でもできるように、簡単な形でいきたいと思います。(ちなみに、私はUnity初心者です(笑))

はじめに

一言でカードゲームと言っても色々な種類があります。当然、機能が多ければ多いほど、複雑になり作成するのが難しくなります。

今回作成するカードゲーム

今回は数日でサクッと作れるのを想定しています。イメージとしてはカイジのEカード風(じゃんけん)ですね。あくまでも「風味」です。ざっくりとしたゲームの流れとしては「カードを配る」→「カードを選択」→「判定」ですね。

じゃんけんカードゲームみたいな

自分と対戦相手、互いに「グー1枚、チョキ3枚、パー1枚」を配るとします(仮)。じゃんけんカードゲームみたいな感じですね。

Unityのヴァージョン

今回はUnity 2020.3.5fのヴァージョンで作成。プロジェクト名は「ECardGame」としています。

ゲーム作成開始

では実際にゲームの作成をしていきます。

画面サイズ

ゲーム画面のサイズはスマートフォンの横を意識して16:9の「1920×1080」。この辺は好きなサイズで問題ないです。

カードの作成

まずはカードを作成していきます。Assetsフォルダ内にImagesフォルダを作成。

Imagesフォルダ内にカードを作成します。カード画像を用意してもいいのですが、仮としてUnityのデフォルトで用意されているSpriteを利用していきます。

ちなみにSpriteは「2Dゲームで画像を取り扱うもの」という感じですね。

正方形のスプライトを選択し名前を「Card」とします。シーンにドラッグアンドドロップすると、ヒエラルキーにCardが追加されます。

ボタンの作成

次にボタンを作成していきます。カードを選択した後に押す、「判定ボタン」ですね。ヒエラルキーでUI→ボタンを追加します。名前は何でもいいです、とりあえず「OPEN」にしておきます。とりあえず仮置きです。

ボタンを作成するとCanvasも追加されるのでカメラ設定・スケール設定をしておきます。

ボタンの位置は適当な場所に移動しておきます。

カード番号の設定

次にカードに番号を設定していきます。表向きは絵だったりしますが、内部的には数字でカードを管理していきます。特にじゃんけん(3すくみ)の場合は数字で管理すると簡単です。

CardオブジェクトをCanvas配下に移動、Card配下にTextを追加します。テキストの初期は0、フォントサイズなどを変更していい感じにしておきます。

数字が表示されない場合は、Cardオブジェクトのレイヤ順序を変更。

カードをスクリプトで生成

次にカードをスクリプトで自動生成していきます。ベタ貼りの方が簡単ですが、勉強も兼ねてスクリプトでやっていきます。

Aseets内に「Scriptsフォルダ」と「Resourcesフォルダ」を作成。

ResourcesフォルダにCardオブジェクトを入れてプレハブ化、ヒエラルキー内のCardは削除。

ヒエラルキーで「空のオブジェクトを追加」。名前を「Operator」にしておきます。カードを配る、判定するなどを行う審判的な役割にしていきます。同じ名前のスクリプトを追加。

スクリプトの中身を下記に変更します。プレハブを生成しているだけですね。

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

public class Operator : MonoBehaviour
{
    public GameObject CardPrefab;

    private void Start()
    {
        GameObject prefab = (GameObject)Instantiate(CardPrefab);
    }
}

Operatorのpublic変数にカードのプレハブを指定。

これで実行してみます。カードは追加されますが、Canvas配下にいないため、数字は出てこないです。数字が見えなくても問題は無いのですが、軽く修正します。

スクリプトの中身を下記に変更。

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

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

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

public変数にCanvasを指定して完了。

試しに再生してみて、Canvas配下に生成され、数字の書かれたカードが画面に表示されればOK

とりあえず第一回目はここまで。とりあえず「スクリプトでカードの生成まで」と言った感じ。

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