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
'공부 > Unity' 카테고리의 다른 글
[Unity] 버튼 스페이스바, 엔터 입력 방지하는 법 (0) | 2023.09.22 |
---|---|
[Unity] 코루틴, Lerp로 부드럽게 이동, 회전, 확대 및 축소하기 (0) | 2023.09.22 |
[Unity] GluelT 스프라이트 시트 만드는 프로그램 (0) | 2023.09.20 |
[Unity] could not create asset from file could not be read / unity rendertexture.create failed requested size is too large sprite renderer 오류 (0) | 2023.09.19 |
[Unity] 유니티 종료 버튼 만들기, 효과음과 배경음 재생하는 SoundManager (0) | 2023.09.19 |