본문 바로가기
TIL

내일배움캠프 2일차 TIL

by vvin39 2025. 4. 8.

📌 Unity 기본 익히기

미니게임 제작을 통해 유니티 기본 사용법과 C# 기본 문법 익히기

 

[빗물받는 르탄이]

캐릭터가 좌우로 이동하며 위에서 떨어지는 빗방울을 받아 점수를 얻는 게임

 

에디터 주요 화면 구성

창 이름 설명
Scene View 게임 씬을 편집하는 공간. 카메라처럼 자유롭게 돌아다니며 오브젝트를 배치하거나 수정할 수 있음
Game View 실제 플레이어가 보는 시점. 실행했을 때 게임이 어떻게 보이는지 확인 가능
Hierarchy 씬(Scene)에 존재하는 모든 오브젝트 목록을 계층 구조로 보여줌. 부모-자식 관계도 확인 가능
Inspector 선택한 오브젝트의 속성을 확인하고 수정할 수 있는 패널. 위치, 크기, 컴포넌트 등 설정 가능
Project 게임에서 사용하는 모든 에셋(asset)들이 정리되어 있는 곳. 이미지, 스크립트, 프리팹, 오디오 등
Console 로그, 오류 메시지 출력되는 공간. Debug.Log() 출력이나 에러 확인할 때 사용
Toolbar 실행 버튼, 씬 이동 도구 (손바닥, 화살표 등), 조정 속성 등을 조작할 수 있는 도구 모음

 

기초 문법 연습

기본 씬 구성

오브젝트에 Order in Layer 설정 → Sprite끼리 앞뒤 순서 조절 

애니메이션 맛보기

애니메이션 만들기 과정

  1. 애니메이션 파일 만들고, Loop Time에 체크
  2. Animation은 동작파일, Controller는 Animation을 컨트롤 하는 것(예- 보통상태 / 맞을 때 / 뛸때 어떤 애니메이션을 사용)
  3. 시간 축에 키프레임 추가
  4. 움직임 or 크기 변화 설정 후 저장

캐릭터 움직이기

 

  • 캐릭터에 스크립트 추가해서 좌우 움직임 구현
    • 오른쪽으로 이동:  transform.position += Vector3.right * 0.05f 
    • Vetor3 (x,y,z) → x,y,z 의 3차원 값
      Vetor3.right    Vector3(1, 0, 0)
      Vector3.right * 0.05f    Vector3(1, 0, 0) * 0.05f → Vector3(1 * 0.05f, 0 * 0.05f, 0 * 0.05f)    Vector3(0.05f, 0, 0)
    • 속도 일정하게 만들기: Application.targetFrameRate = 60;
    • 벽에 닿으면 방향, 좌우 전환 / 마우스 클릭하면 움직이는 방향, 좌우 바꾸기
if (Input.GetMouseButtonDown(0))
{
    direction *= -1;
    renderer.flipX = !renderer.flipX;
 }
if (transform.position.x >= 2.6f)
{
    direction *= -1;
        renderer.flipX = true;
}
if (transform.position.x <= -2.6f)
{
    direction *= -1;
	renderer.flipX = false;
}

 

 

빗방울 구현하기

기본

  • Rigidbody 2D 추가 → 중력 영향 받게 함
  • 충돌 세팅: Add componet    circle/box collider 2d
  • 충돌 조작: tag 설정 
  • 충돌 확인: OnCollisionEnter2D()
  • 땅과 충돌 시 Destroy(gameObject) 로 제거

랜덤

  • 랜덤 위치 설정: Random.Range(xMin, xMax)
  • 고정 크기 조절: transform.localScale = new Vector3(size, size, 0);
  • 고정 색 변경: GetComponent().color = new Color(100 / 255f, 100 / 255f, 255 / 255f, 255 / 255f);

반복

  • 빗방울 복제하기
    • Prefabs : 복제할 수 있는 상태로 만듦
    • Instantiate(): 프리팹 복제
  • 일정 시간 (0.5초) 간격으로 빗방울 생성: InvokeRepeating("MakeRain", 0, 0.5f);

점수 시스템

 

  • 점수 UI 구성: Text
  • 싱글톤 패턴으로 UI 매니저 구성 → 어디서든 점수 업데이트 가능
public static GameManager Instance;
void Awake() 
{ 
	Instance = this; 
}

 

게임 오버

  • 남은 시간 카운트 다운: totalTime -= Time.deltaTime
  • 게임 초기화하기
private void Awake()
 {
    Instance = this;
    Time.timeScale = 1.0f;
 }

 

💡 느낀 점

  • 처음에는 복잡해보였지만 하나씩 구현해보니 재밌고 이해가 잘 되었다.
  • 스크립트와 오브젝트를 연결하는 방식이 직관적이어서 금방 적응 가능했다.

.

⁉️ 오류 해결하기

스크립트 끌어다 놓기 했을 때 오류 발생

스크립트를 끌어다 놓았을 때 오른쪽과 같은 오류가 발생


이 오류는 스크립트의 이름과 내부 코드의 클래스명이 일치하지 않는 경우에 주로 발생하는 오류로, 스크립트의 이름클래스명대, 소문자까지 일치해야 한다.

 

 

 

 

 

'TIL' 카테고리의 다른 글

구조체(struct) vs 클래스(class)  (0) 2025.04.14
내일배움캠프 5일차 TIL  (0) 2025.04.11
내일배움캠프 4일차 TIL  (0) 2025.04.10
내일배움캠프 3일차 TIL  (0) 2025.04.09
내일배움캠프 1일차 TIL  (0) 2025.04.07

최근댓글

최근글

skin by © 2024 ttuttak