공부/Unity

[Unity] 2D 주사위 굴리기 (ui-image)

굴러다니다니 2023. 9. 20. 15:30
728x90
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class BodyDice : MonoBehaviour
{
    [SerializeField] Sprite[] diceSides;
    private Image originImage;
    bool isRolling = false;

    private void Start()
    {
        originImage = GetComponent<Image>();
    }

    public void RollDice()
    {
        if (!isRolling) StartCoroutine("RollTheDice");
    }

    private IEnumerator RollTheDice()
    {
        isRolling = true;
        int randomDiceSide = 0;
        int finalSide = 0;

        for (int i = 0; i <= 20; i++)
        {
            randomDiceSide = Random.Range(0, 6);
            originImage.sprite = diceSides[randomDiceSide];
            yield return new WaitForSeconds(0.06f);
        }
        finalSide = randomDiceSide + 1;
        isRolling = false;
    }
}

아래 영상에 나오는 코드를 ui image를 수정하는 코드로 바꿔주었으며

버튼을 누르면 작동되게 하고 싶어서 

해당되는 버튼에 onClick 함수로 RollDice를 넣어줬다.

 

굴리는 중에는 다시 못 굴리게 bool 변수 추가해준게 끝이다.

지금 보니 코루틴에서 캐싱하면 더 좋았을 듯 하다.

 

위에 diceSprites에 6개 주사위 면 이미지를 넣어주면 된다 

호로로록 돌아감!

 

https://www.youtube.com/watch?v=JgbJZdXDNtg 

 

728x90