3-8. 5조 RocketLauncher 점수

keubung·2024년 10월 16일
  • 역할 분담
    - 메인UI 구성 : 타이틀 -(게임시작)-> 새로운시작, 스테이지 선택 -> 게임 화면 -> 게임오버 OR 클리어

    • 게임이 최초 실행시 타이틀 화면에서 클릭,아무 키보드 입력시 스테이지 선택 씬으로 전환
    • 처음부터,스테이지 선택 - 스테이지는 [1-1,2,3/2-1,2,3/3-1,2,3]
    • 스테이지 선택후 게임씬으로 전환 이후 주성님의 로직부분이 완성이 된후
    • 게임오버 - 게임오버씬 - 타이틀 화면
    • 클리어 - 게임화면 - 클리어연출 - 다음씬

꾸준 학습

  • 문제 상황

    - shoot 버튼을 누르고 난 후 로켓의 지속 시간에 따라 점수가 올라가는 코드를 짜고 싶었음.

    • currentscore = Time.deltatime * SPEED;
      -> 버튼을 누르지 않아도 실행이 됨.
      -> Time.deltatime은 시간이 흐르는 것이 아니라 계속해서 특정 값(약 0.7)을 넘겨주는 것으로 대입이 아니라 더해줘야함.
    • currentscore += Time.deltatime * SPEED; 으로 수정
      -> 숫자는 계속해서 올라가지만 여전히 버튼을 누르지 않아도 점수가 올라감.
      • 버튼을 눌렀을 때 실행이 되도록 변경해야 함.
    • 시간이 아닌 로켓의 포지션 값을 받아와서 계산하는 것으로 변경
      • currentscore = rocket.transform.position.y * SPEED; 으로 변경
        -> 정상적으로 실행되지 않음.(수정 필요)
  • 최종 코드 (현재 점수, 최고 점수)

    Vector3 rocket_y;
    private void Update()
    {
      CurrentScore();
      HighScore();
    }
    
    public void CurrentScore()    // 현재 점수를 저장
    {
      rocket_y = transform.localPosition;
      currentscore = rocket_y.y * SPEED;
      currentscore = Mathf.Round(currentscore * 100) / 100;
      currentScoreTxt.text = $"{currentscore} M";
    }
    
    public void HighScore()    // 현재 점수와 비교해서 더 큰 점수를 저장
    {
      // TODO : 만약 Shoot버튼을 눌렀다면
      if (highscore < currentscore)
      {
          highscore = currentscore;
      }
      else
      {
          return;
      }
      HighScoreTxt.text = $"HIGH : {highscore} M";
    }
  • 다음에 해결할 문제

    • 로켓이 멈추지 않고 계속 일정한 속도로 날아감.
    • 처음 시작할 때 위치가 변해서 버튼을 누르기 전에 점수가 변해있음.
    • 다음 퀘스트 진행

  • 팀 프로젝트 (벽돌깨기 게임 만들기)
    • 임시 UI outline 구성 완료(스크립트 미구현)
      • IntroScene
        - 팀이름 -> 팀원 -> 타이틀 화면으로 넘어가도록 구성할 예정
      • StageScene
        - 스테이지 1,2,3 선택 -> 선택한 스테이지 패널 활성화 -> 전체 패널 왼쪽으로 이동 -> 세부 스테이지 선택(1-1, 1-2 ... 3-2, 3-3)
      • MainScene
        - 게임 진행
      • GameOverScene
        - 스테이지 번호, 게임 클리어 여부, 점수, 최고 점수, 시간, retry 버튼, main 버튼
profile
김나영(Unity_6기)

0개의 댓글