Unityでカードをめくる(回転させる)方法です
カードに限らずオブジェクトを回転させる時に使えます
1.カードの表と裏の画像を準備
ちなみにこの画像は『いらすとや』さんの画像を使わせて頂いてます
www.irasutoya.com
2.裏の画像をシーン内にドラッグ&ドロップ
インスペクターの位置X Yは0にしておく
3.プロジェクトタブにカーソルを持っていき右クリックでCardTurnというスクリプトを作成
4.CardTurnを編集
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CardTurn : MonoBehaviour { public float speed = 300.0f; // 回転スピード public Sprite cardFront; //カードの表の絵 private Sprite cardBack; //カードの裏の絵 private bool isOpen = false; //true:表 false:裏 private bool isTurn = false; //true:回転中 false:停止している // Start is called before the first frame update void Start() { cardBack = GetComponent<SpriteRenderer>().sprite; } // Update is called once per frame void Update() { //カードが停止している時スペースキーを押されたらカード回転 if (Input.GetKeyDown(KeyCode.Space) && !isTurn) { StartCoroutine(Turn()); } } IEnumerator Turn() { isTurn = true; Vector3 cardAngle = transform.eulerAngles; if (!isOpen) //裏→表 { cardAngle.y = 0f; //中間地点までめくる while (cardAngle.y < 90f) { cardAngle.y += Time.deltaTime * speed; transform.eulerAngles = cardAngle; yield return null; } cardAngle.y = 90f; transform.eulerAngles = cardAngle; //カードの絵を変更する(裏→表) GetComponent<SpriteRenderer>().sprite = cardFront; //中間地点から最後までめくる while (cardAngle.y < 180.0f) { cardAngle.y += Time.deltaTime * speed; transform.eulerAngles = cardAngle; yield return null; } cardAngle.y = 180f; transform.eulerAngles = cardAngle; isOpen = true; } else //表→裏 { cardAngle.y = 180f; //中間地点までめくる while (cardAngle.y > 90f) { cardAngle.y -= Time.deltaTime * speed; transform.eulerAngles = cardAngle; yield return null; } cardAngle.y = 90f; transform.eulerAngles = cardAngle; //カードの絵を変更する(表→裏) GetComponent<SpriteRenderer>().sprite = cardBack; //中間地点から最後までめくる while (cardAngle.y > 0f) { cardAngle.y -= Time.deltaTime * speed; transform.eulerAngles = cardAngle; yield return null; } cardAngle.y = 0f; transform.eulerAngles = cardAngle; isOpen = false; } isTurn = false; } }
5.CardTurnをカードのオブジェクトにドラッグ&ドロップ
6.カードの表の画像をカードのインスペクターのスクリプトにドラッグ&ドロップ
これで実行するとスペースキーを押すたびにカードをめくったりふせたりできます
Unity習得中です
アドバイス等あればよろしくお願いします