
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; //「今、表向きですよ」という状態を保持
}
}