0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

神経衰弱でカードを並べる

Posted at

神経衰弱でカードをランダムに並べて表示できるようにします。前回の記事のカードをめくる処理の続きから始めます。

前回の記事

カードを並べる

カードの画像は前回の記事の引用元からダウンロードします。カードはc01~c13、d01~d13、h01~h13、s01~s13の合計52種類あり、手動で配置すると大変なのでスクリプトで配置します。
まずは52枚の画像をHierarchyビューにドラッグし、さらにHierarchyからProjectビューにドラッグすることでプレハブ化します。またカードの裏面となるz01も同じようにプレハブ化しておきます。
以下のスクリプトを作成してMain Cameraにアタッチします。

CardManager.cs
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CardManager : MonoBehaviour
{
    public GameObject[] cards = new GameObject[52]; //カードの表52種類を格納する配列
    public GameObject cardBack; //カードの裏を格納する変数

    void Start()
    {
        System.Random random = new System.Random();
        cards = cards.OrderBy(x => random.Next()).ToArray(); //配列をシャッフルする

        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 13; j++)
            {
                GameObject cardPrefab = Instantiate(cards[i * 13 + j], new Vector2(j * 3, i * 4), Quaternion.identity); //カードの表の画像を4x13の形に等間隔で並べる
                GameObject backPrefab = Instantiate(cardBack, cardPrefab.transform); //カードの裏面を表面の子オブジェクトとして生成する
                cardPrefab.AddComponent<BoxCollider>(); //カードの表にはBoxColliderをアタッチする
                backPrefab.transform.localPosition = Vector2.zero; //カードの裏のローカル座標を(0, 0)に設定する
                backPrefab.GetComponent<SpriteRenderer>().sortingOrder = 1; //カードの裏のOrder in Layerを1に設定する
            }
        }
    }
}

Main CameraにアタッチしたらInspectorビューで、cardsのElement0~Element51にc01~c13、d01~d13、h01~h13、s01~s13のプレハブをドラッグします。またCard Backにはz01のプレハブをドラッグします。
これで実行すれば52枚のカードが縦4枚、横13枚の長方形の形に等間隔で並びます。
後は52枚のカードが画面にすべて収まるようにMain Cameraの位置を調整します。参考までに、InspectorビューでMain CameraのPositionをX=17.5、Y=6、Z=-10、Sizeを9にすると下の図のように綺麗に収まります。

Image1.png

カードをクリックするとカードがめくれるのでランダムに配置されていることがわかります。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?