unityで、簡単なカードめくりゲームを作ってみたいと思います。 まあ、今回は厳密にはゲームではなくって ただクリックしたらカードがめくれるってだけの話なんですが カードゲームとかパズルゲームでは、必ずといっていい程使われる技術なので 是非、頑張って作ってみてください。

動画

動画内で使用した画像(ご自由にお使いください)

コード

▼GameManager

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

public class GameManager : MonoBehaviour
{
    //1)素材関連
    public GameObject cardPrefab; // Cardプレハブ
    public Sprite backImage; // 裏面
    public Sprite frontImage; // 表面

    //2)カード情報を扱うための準備
    private SpriteRenderer sr; //画像表示に関する
    private BoxCollider2D col; //当たり判定に関する
    private bool isFront = false; // false=裏, true=表

    // Start is called before the first frame update
    void Start()
    {
        //3)カード情報を取得して、裏向きにセット
        //Instantiate(何を, 位置, 回転);
        GameObject newCard = Instantiate(cardPrefab, Vector3.zero, Quaternion.identity);
        sr = newCard.GetComponent<SpriteRenderer>(); //カードの画像情報を取得
        col = newCard.GetComponent<BoxCollider2D>(); //カードの当たり判定を取得
        ShowBack(); // 最初は裏にセット⇒中身は4へ

    }

    // Update is called once per frame
    void Update()
    {
        //6)左クリックしたら(0は左、1は右)
        if (Input.GetMouseButtonDown(0))
        {
            //マウス位置を取得
            Vector3 mp = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            mp.z = 0;

            //マウスの位置(mp)がColliderの範囲だったら
            if (col.OverlapPoint(mp))
            {
                if (isFront)
                {
                    ShowBack(); //表向きなら⇒裏向きへ
                }
                else
                {
                    ShowFront(); //そうでなければ⇒表向きへ
                }
            }
        }
    }

    //4)ShowBack()の中身 / 裏向きにセット
    void ShowBack()
    {
        sr.sprite = backImage;
        isFront = false; //「今、裏向きですよ」という状態を保持
    }

    //5)表向きにセット
    void ShowFront()
    {
        sr.sprite = frontImage;
        isFront = true; //「今、表向きですよ」という状態を保持
    }
}

コメントを残す