유니티퀘스트 8.야구게임

using Microsoft.VisualBasic;

Random rand = new Random(); //랜덤클래스 초기화
int Number = rand.Next(100, 1000); //100이상 1000미만 랜덤 숫자 초기화

Console.WriteLine("랜덤 정답 : " + Number);

char[] targetNumber = new char[3];
bool guessedCorrectly = false;
int attempts = 0;
for(int i = 0; i < 3 ; i++)
{
    targetNumber[i] = Number.ToString()[i];
}

while(!guessedCorrectly)
{
    attempts++;

    Console.Write("Enter your guess (3 digits) : ");
    string userGuess = Console.ReadLine();

    //예외처리
    //1.유저가 숫자를 입력 안한경우
    //총합 입력값이 (100 <= input <= 999) 이면 검사 시작



    int strikes = 0;
    int balls = 0;

    for (int i = 0; i < 3; i++) // userGuess
    {
        for(int j = 0; j < 3; j++) // targetNumber
        {
            if(targetNumber[j]  == userGuess[i]) //숫자가 같은지 비교
            {

                switch(i == j) //같은 자리인지 비교
                {
                    case true: //같은자리 (스트라이크)
                        strikes++;
                        break;

                    case false: //다른자리 (볼)
                        balls++;
                        break;
                }

            }
        }
    }
    Console.WriteLine(strikes + "Strike(s), " + balls + "Ball(s)");

    if (strikes >= 3) guessedCorrectly = true;
}

Console.WriteLine("Congratulations! You've guessed the number in" + attempts + " attempts.");

 

5주차 숙제 게임개발

 

Run & Jump - 프로토타입 설명

1.마우스를 누르면 캐릭터 머리 위에 파워 게이지가 표시됨

2.마우스를 놓으면 놓은 방향으로 캐릭터가 빙글빙글 돌아가며 발판들을 넘어감

3.이미 한번 착지한 발판은 점수 x , 발판을 처음 밟을때만 점수 증가

 

오늘 구현 한것

1.각종 플레이어의 플레이를 방해할 장애물 및 아이템 추가

    ㄴ점수를 주는 아이템인 동전 추가 및 플레이어를 방해하는 가시 추가 

2.날라오는 블럭들이 랜덤 범위, 규격화 필요

     ㄴ위치는 규격화 하지 못헀지만, 블럭들 4종류로 고정시켜 동전과 가시를 배치시킴

3. 게임 오버시 팝업창 및 제작

     ㄴ 플레이어가 떨어지거나 가시에 찔리면 팝업차이 뜨며 현재 점수 및 최고점수가 표시되게 설정 Retry버튼 누르맨

          Scene로드하기

 

구현 해야될것

1.날라오는 블럭 위치 규격화하기 

 


 

1.Scene 재로드 하는경우 Find()로 오브젝트를 못 찾는 이유 

이유 : GameObject가 비활성화 상태

비활성화 된 객체를 활성화시키려면, 활성화된 부모를 찾아서 자식을 찾는 형식으로 접근해야 합니다. 

빈 오브젝트를 하나 만들고 자식으로 넣으면 해결

게임이 끝나면 뜨는 팝업창에 빈 오브젝트를 부모오브젝트로 설정

GameManager.cs

 private void OnEndPanel()
 {
     Transform EndObj = endPanel.transform.GetChild(0);
     EndObj.gameObject.SetActive(true);
 }

 private void DisEndPanel()
 {
     Transform EndObj = endPanel.transform.GetChild(0);
     EndObj.gameObject.SetActive(false);
 }

게임 매니저에 해당 코드를 추가하여 EndPanel 오브젝트를 껏다 켰다 할수 있게 설계

 

2.자식오브젝트의 Scale 값을 부모오브젝트와 Scale 값을 덜 영향받게 하기

이유 : 자식으로 오브젝트를 넣으며 해당 오브젝트는 계층 구조를 가지기 떄문에
위치,크기,각도 값이 같이 변경 된다.

위의 두 Block 오브젝트는 Scale 값이 다른걸 볼 수있다. 이걸 바로 자식 오브젝트로 넣으면 Coin의 Scale을 조절 해야됨으로 나중에 보수적인 면에서도 좋지 않다. 부모(Block) - 자식1(빈오브젝트) - 자식2(Coin)으로 설계를 하면 

빈 오브젝트를 조절하여 Coin 은 제어하지 않고도 조절이 가능하다. 

'내일배움캠프_Unity_6기 > TIL(Today I Learend)' 카테고리의 다른 글

TIL : 2024-08-28(수)  (0) 2024.08.28
TIL : 2024-08-27(화)  (0) 2024.08.27
TIL : 2024-08-22(금)  (0) 2024.08.23
TIL :: 2024-08-22(목)  (0) 2024.08.22
TIL : 2024-08-21(수)  (0) 2024.08.21

+ Recent posts