새소식

C#,Unity Programming

게임개발 학습. 카드 뒤집기 게임(카드 랜덤으로 섞기 using System.Linq, OrderBy, Resources.Load(sprite))

  • -
728x90

 

// 게임개발 종합반 - 4주차(스파르타코딩클럽)

카드에 랜덤으로 이미지 넣기

  1. 배열에 숫자를 두쌍씩 집어넣는다.
  2. 배열를 랜덤으로 섞는다.
  3. 카드가 생성될 때 배열에서 이미지를  꺼내서 붙여준다
  • 배열에 이미지 두장씩 집어넣기
    • 먼저 두쌍씩 존재하는 배열 만들기
    • 호출은 rtans[i]
int[] rtans = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 };
  • 배열 섞기 (System.Linq 에서 OrderBy 를 가져다 쓰자)
    • OrderBy(item => Random.Range(-1.0f, 1.0f)) 이 내용이 잘 이해가 되지 않는다.
    • 질문후 답변도 올려놓아야 겠다
void Start()
    {
        int[] rtans = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 };
        rtans = rtans.OrderBy(item => Random.Range(-1.0f, 1.0f)).ToArray();

        for (int i = 0; i < 16; i++)
        {
            GameObject newCard = Instantiate(card);
            //newCard를 Cards안으로 넣기
            newCard.transform.parent = GameObject.Find("Cards").transform;
            // (0,1,2,3), (4,5,6,7), (8,9,10,11), (12,13,14,15)
            float x = (i / 4) * 1.4f - 2.1f;
            float y = (i % 4) * 1.4f - 3.0f;
            newCard.transform.position = new Vector3(x, y, 0);

            Debug.Log(rtans[i]);
        }
    }
  • 카드가 생성될 때 카드에 이미지를 붙여주기
            string rtanName = "rtan" + rtans[i].ToString();
            newCard.transform.Find("front").GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>(rtanName);

카드에 애니메이션 넣기

  • idle, flip animation 레코드
  • 바로 작동하므로 Exit Time 해제, transition duration 0
  • Booleen parameter isOpen으로 transition 조건을 할당
  • card script 넣기
public class card : MonoBehaviour
{
    public Animator animator;

    public void openCard()
    {
        animator.SetBool("isOpen", true);
        transform.Find("front").gameObject.SetActive(true);
        transform.Find("back").gameObject.SetActive(false);

    }
}

 

Contents
  • -

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.