공부/Unity

[Unity] 도전 2주모작 오버쿡드(2) 슬라이더 일시정지 및 타이머

굴러다니다니 2023. 6. 22. 23:39
728x90

1. 재료 들기

plate에서 쓴 코드는 transform에서 parent랑 child가 서로 달라서 안되고, 

tag로 경우를 나눠서 ingredient일 때는 다른 position에 들리게끔 했다

마찬가지로 Player에게서 자식객체로 setParent를 써서 넣어줬다

끙차끙차


2. 재료 chopping board 위에 두기 (Countertop의 type board로 바꿈)

+ position 위치를 y축으로 살짝 높게 바꿈

탸다~


3. 플레이어 따라다니는 원 UI

- zombie Surviver 방식이랑 똑같이 Player에게 canvas 생성

이미지가 없어서 그냥 원으로 대체해둠

위에 이미지 참고~


4. 들고 놓고 손, 칼 껐다 키기

isHolding 변수에 따라 손을 쥐는거, 피는거 껐다 켰다 하게 했고

내가 써는 애니메이션을 진행중이면 칼을 키게 했다

평소 : 손 펴기 / isHolding : 손 움켜쥐기 / 다지는 중일땐 움켜쥐고 칼 켜기


5. 써는거 활성화 하면 슬라이더 작동, 중간에 범위에서 벗어나면 중단

collider에 들어가 있을때만 활성화가 가능한데, 범위를 벗어나서도 계속 하면 안되니깐

exit을 된게 포착되면 애니메이션도 멈춰버리고 연결되었던 slider도 멈춰버리게

- event와 delegate 사용

 public void StartCutting(UnityAction EndCallBack = null)
    {
        if (parentObject.onSomething)
        {
            cookingBar.gameObject.SetActive(true);
            ClearTime();
            _CoTimer = StartCoroutine(CoStartCutting(EndCallBack));
            FindObjectOfType<PlayerController>().anim.SetTrigger("startCut");
            FindObjectOfType<PlayerController>().anim.SetBool("canCut", true);
        }
    }
    public void PauseSlider(bool pause)
    {
        Pause = pause;
    }

    private IEnumerator CoStartCutting(UnityAction EndCallBack = null)
    {
        while (CuttingTime <= 1)
        {
            while (Pause)
            {
                yield return null;
            }
            yield return new WaitForSeconds(0.5f);
            CuttingTime += 0.25f;
        }
        EndCallBack?.Invoke();
        OffSlider();
        _CoTimer = null;
        Pause = false;
        CuttingTime = 0;
    }

    private void ClearTime()
    {
        if (_CoTimer != null)
        {
            StopCoroutine(_CoTimer);
            _CoTimer = null;
        }
        Pause = false;
    }

콜라이더에서 벗어나면 Pause를 true로 바꾸고 일시정지된다 

(구글링에서 가져온거라 공부가 필요)

일시정지된 왼쪽 파랑이


6. 슬라이더 WorldToScreenPoint

다지는 보드 위에 슬라이더가 둥둥 따라다녀야 돼서 For the king 모작때 사용한 함수 사용

WorldToScreenPoint를 써서 해결!


7. 썰린 재료 모양 바꾸기 (파란 오류 ㅠ)

의외로 간단하게 meshRenderer에서 모델을 썰린 재료 모델로 바꾸면 새우는 간단하게 됐는데

새우는 썰기 전, 후 material을 동일한 걸 썼기 때문

근데 fish는 그렇지 않아 파란 회가 되어버린,,

깔깔

종류를 나눠서 fish일때는 다질때 다른 material 넣으면 될듯!

잘 썰린 새우와 파란 회의 모습

얘네는 ingredient 그대로를 모습만 바꾼거라 그대로 들린다

 

728x90