골드메탈님 퍼즐 5

https://www.youtube.com/watch?v=p-gsoqgn8C8&list=PLO-mt5Iu5TeajtA5UQT7_2UjB7_dkGagU&index=5


Mathf.Pow(2, level);
뜻 거듭제곱
레벨이 0이면 1
레벨이 1이면 2
레벨이 2이면 4
레벨이 3이면 8 
레벨이 4이면 16


manager.score += Mathf.Pow(2, level);
근데 이럴 때 int 와 float 형 차이 오류 뜨면

manager.score += (int)Mathf.Pow(2, level);
이렇게 강제 int 형으로 형 변환


 



이 게임의 게임 오버 는 PlayGround 아래의 Line 에
동글이 넘칠 때 발동하게 할거임
박스 콜라이더 쓸 거임

 

 

 

Line 오브젝트의 Tag Finish 로 설정

 

 

    void OnTriggerStay2D(Collider2D collision)
    {
        if (collision.tag == "Finish")
        { 
        }

    }

콜리전 충돌이 지속할 때 발동,

그리고

태그가 Finish 일 때 발동

 

 

 

private float deadTime;
시간을 다룰 거라서 소수점 변수 하나 생성
deadTime += Time.deltaTime;
게임이 실행되는 시간을 누적시키는 변수가 되겠다
시간제한 , 지속시간 을 체크하는 데 씀



변수 새로 만들기 = 선언 = 초기화 = 추가 = 

Initialization 

Add 

Declaration 

Appending 

Assignment

 

 

 

 

게임매니저 에서 GameOver ( ) 함수를 만든후

동글 스크립트 에서 그 함수를 실행함

 

 

        
private SpriteRenderer spriteRenderer;
//스프라이트 담을 변수 추가

    void Awake()
    {
        spriteRenderer = GetComponent<SpriteRenderer>();
    }
    // 스프라이트 변수 컴포넌트 초기화
    
        
        if (deadTime > 2)
         {
                spriteRenderer.color = new Color(188f / 255f, 62f / 255f, 123f / 255f, 1f); 
         }
         // 내가 지정한 빨간색으로 컬러 덧씌우기

 

테스트 해봤는데
동글이 빨간색으로 안 변한다

 


Rigid body 2d 컴포넌트를 보게 되면
Sleeping mode 가 있다
물리 연산을 멈추고 쉬겠다 라는 뜻임
이거 잘못 설정하면 색깔 안 바뀜

 


프리팹 폴더의 동글의 리지드바디 2디 컴포에서 Sleeping mode  never sleep 으로 바꿔야 함

 

 

    void OnTriggerExit2D(Collider2D collision)
    {
        if (collision.tag == "Finish")
        {
            deadTime = 0;
            spriteRenderer.color = Color.white;
        }
    }

콜리전이 바깥으로 탈출할 때

태그가 finish 인 것은

deadtime (5초 경과후 게임오버) 지속시간을 0초로 초기화

Color.white 는 기본 색상으로 변경한다는 뜻임

 

 

        if (isOver)
        {
            return;
        }
        if isOver == true)
        {
            return;
        }

이프 안에 불 값은 기본 true 를 뜻함

리턴은 함수 종료

 

 

 


FindObjectsOfType 은 이제 안씀
FindObjectsByType 를 써야함
오류 뜸


        Dongle[] dongles = GameObject.FindObjectsByType<Dongle>;
오류 뜸

        Dongle[] dongles = GameObject.FindObjectsByType<Dongle>(FindObjectsSortMode.None);
이렇게 바꿔야 할듯? 아마?




            dongles[index].Hide(Vector3.up * 100);
일부러 높은 값을 넣어서
저 위로 숨기는 꼼수


 

 


 yield return new WaitForSeconds(0.1f);

현재 코루틴의 실행을 멈추고,
0.1초의 실제 게임 시간(Real Game Time)이 경과할 때까지 기다렸다가, 
시간이 지나면 멈췄던 지점부터 다음 코드를 이어서 실행하세요.

 

 

 

            dongles[index].rigid.simulated = false;

동글 들의 리지드바디(변수) 시뮬을 끄겠다

 

 

 

   void NextDongle()
   {
       if (isOver)
       {
           return;
       }
       
     어쩌구 저쩌구
}

 

다음 동글 프리팹을 호출하는 함수 속


만약 isOver 끝이다 함수가 true 면?

return , 즉 조기 종료하고 끝내겠다

 

이러면 어쩌구 저쩌구 를 발동하지 않음

 

 

 

반응형
Posted by 이름이 익명
: