Carrot
본문 바로가기
Unity/멋쟁이사자처럼 부트캠프

[멋쟁이사자처럼부트캠프] 유니티 게임 개발 5기(6일차) - 캐릭터 움직이기 및 Git 잔디 심기 🌱

by 독기품은토끼 2025. 5. 20.
오늘의 학습 목표
1. 캐릭터 움직임 성능 높이기
2. 작업한 내용 Git에 올리기
3. C# 기초 학습

 

1. 캐릭터 움직임 성능 높이기

1. DeltaTime 적용

 

// 기존 코드
this.transform.position = this.transform.position + Vector3.forward * moveSpeed;​

// 변경 후 코드
transform.position += Vector3.forward * moveSpeed * Time.deltaTime;

 

기존 코드는 프레임에 따라 움직임 속도가 달라지는 문제가 있다.

 

 

3일차인가? 에 설명해 주신 예시를 다시 가져와 정리해 보자

  • 30 FPS: 1초에 30번 실행되므로, 한 프레임당 시간(deltaTime)은 1/30초
  • 100 FPS: 1초에 100번 실행되므로, 한 프레임당 시간(deltaTime)은 1/100초

두 경우 모두,
이동 속도 * deltaTime을 사용하면

  • 30 * (1/30) = 1
  • 100 * (1/100) = 1

결과적으로 1초 동안 이동한 거리는 동일해진다.

 

2. GetKeyDown 적용

 

키보드를 눌렀을 때 캐릭터가 움직이도록 설정한다.

 

[Key 함수]

함수명 실행 시점 용도 예시 특징
GetKeyDown 키를 누르는 순간 점프 시작, 메뉴 열기 한 번만 실행됨 (딱 한 프레임)
GetKeyUp 키를 놓는 순간 점프 종료, 공격 해제 한 번만 실행됨 (딱 한 프레임)
GetKey 키를 누르고 있는 동안 캐릭터 이동 누르고 있는 동안 매 프레임 실행

 

 

2. Github 연동

1. 클래식 토큰 생성

 

토큰은 특정 권한을 가진 사용자인지를 인증하기 위해 발급되는 키로, ID/PW 방식의 보안이 취약해서 생겨난 인증 방식이다.

 

2. 레포지토리 생성

 

  • Repository 이름 설정 : UnityTutorial2D
  • Ignore 설정 : Unity
    • 저번 포스팅에서는 ignore 파일을 직접 다운 받아서 올렸지만, 이렇게 github에서 바로 넣을 수도 있다!

 

3. Github Desktop 연동

3.1. github desktop 열기

 

3.2. 저장소 연결

 

3.3. 생성된 git 관련 파일을 내 프로젝트 경로로 옮기기

 

내 프로젝트 경로는 Unity에서 Show Explorer 통해 확인할 수 있다.

4. Commit & Push

4.1. 추가나 수정된 파일을 커밋하기

'+' 표시로 커밋이 필요한 파일을 확인할 수 있다

커밋명은 필수로 작성되어야 하고, 아래 간단한 메모(?)를 추가할 수 있음

 

4.2. 푸쉬하기

 

히스토리를 통해서 내 작업 내용을 확인할 수 있고, Push가 완료되면 Fetch로 변경된다.

 

4.3. Remote 저장소에서 파일 수정한 후 로컬 저장소에 업데이트하기

4.3.1. Remote 저장소에서 수정할 파일 클릭

 

4.3.2. 파일 내용 수정 후 change commit

 

4.3.3. Github Desktop 통해서 Push

 

푸쉬하면 로컬 저장소에도 수정한 내용이 업데이트되었음을 확인할 수 있다!

 

3. C# 기초 학습(3)

C#을 추가적으로 학습한다.

이전 포스팅에 중복되는 내용은 생략하겠음 ㅇㅅㅇ

🥕 이전 C# 기초 포스팅
 

[멋쟁이사자처럼부트캠프] 유니티 게임 개발 5기(3일차) - Visual Studio를 이용한 C# 프로그래밍 기초

✅ 오늘의 학습 목표C# 경험해 보기 1. 프로젝트 생성새 프로젝트 만들기 -> 콘솔 앱 -> 프로젝트명 및 경로 설정 -> 최상위 문 사용 안 함 체크 후 만들기 와 근데 폰트 진짜 너무 못생겨서 바꿔줬

toxicbunny.tistory.com

 

 

[멋쟁이사자처럼부트캠프] 유니티 게임 개발 5기(4일차) - C# 프로그래밍 기초(2) 및 Unity 기본 사용

✅ 오늘의 학습 목표1. C# 경험 마무리2. 유니티 에디터 알아보기 1. C# 프로그래밍 기초(2)1. NULL메모리 상에 비어있는 값값이 0인 것과는 다르다.그냥 아예 없음, 값 자체가 없음이라고 보면 된다. [

toxicbunny.tistory.com

 

🥕 예행 작업
1. Scene 생성 (Memory Struct)
2. Script 생성 (구조체 예제 : Study_ClassStruct / 함수 예제 : Calculator)

 

1. 구조체 (Struct)

클래스와 매우 비슷하지만 메모리 상에 저장하는 방식이 다르다. (상속을 받지 못 함)

구분 클래스 구조체
형식 참조 형식 (Reference Type) 값 형식 (Value Type)
메모리 힙(Heap)에 저장, 변수는 참조 보관 스택(Stack)에 저장, 값 자체를 저장
생성 방법 new 키워드로 생성 new 없이도 생성 가능
상속 가능 (다형성 O) 불가능 (다형성 X)
기본값 null 가능 null 불가능
성능 크고 복잡한 데이터에 적합 작고 간단한 데이터에 적합
사용 예 캐릭터, 게임 매니저 등 복잡한 객체 위치, 색상 등 단순 데이터 표현

 

 

1.1. Class와 Struct의 차이점 : 코드

using UnityEditor.Rendering;
using UnityEngine;

public class Study_Class
{
    public int number;

    // 생성자 : 생성될 때 실행되는 함수
    public Study_Class(int number)
    {
        this.number = number;
    }
}

public struct Study_Struct
{
    public int number;

    // 생성자
    public Study_Struct(int number)
    {
        this.number = number;
    }
}

public class Study_ClassStruct : MonoBehaviour
{
    void Start()
    {
        Debug.Log("클래스 ------------------------------");
        Study_Class c1 = new Study_Class(10);
        Study_Class c2 = c1;
        Debug.Log($"c1 : {c1.number} \nc2 : {c2.number}");

        c1.number = 100;
        Debug.Log($"c1 : {c1.number} \nc2 : {c2.number}");

        Debug.Log("구조체 ------------------------------");
        Study_Struct s1 = new Study_Struct(10);
        Study_Struct s2 = s1;
        Debug.Log($"s1 : {s1.number} \ns2 : {s2.number}");

        s1.number = 100;
        Debug.Log($"s1 : {s1.number} \ns2 : {s2.number}");
    }
}

 

[결과]

 

▶ 클래스 (Study_Class)

  • c1과 c2는 같은 객체를 참조
  • c1.number를 바꾸면 c2.number도 함께 바뀜
  • 클래스는 참조 타입(Reference Type)이기 때문에, 같은 메모리 주소를 공유

 

▶ 구조체 (Study_Struct)

  • s1과 s2는 서로 독립적인 복사본
  • s1.number를 바꿔도 s2는 영향을 받지 않음
  • 구조체는 값 타입(Value Type)이라, 값 자체가 복사

 

2. 함수 (Method)

using UnityEngine;

public class Calculator : MonoBehaviour
{
    public int number1;
    public int number2;


    void Start()
    {
        int addResult = AddMethod();
        int minusResult = MinusMethod();

        Debug.Log($"더한 값 : {addResult} / 뺀 값 : {minusResult}");

    }
    
    // void = 반환 값이 없는 함수!!
    int AddMethod()
    {
        int result = number1 + number2;
        return result;
    }

    int MinusMethod()
    {
        int result = number1 - number2;
        return result;
    }
}

 

[결과]

 

 


 

 

멋사 부캠은 항상 16시부터 수업 종료까지 회고 시간을 갖는다.

흠.. 이 시간을 허투루 사용하고 싶지 않아서 금일 학습 내용을 블로그에 작성하게 되었는데,

항상 수업시간이나 쉬는 시간에 정리를 다 끝내버려서 이 시간이 다시 붕 뜨게 되었다!!

아직은 기초라 복습 내용을 또 듣자니 너무 루즈하고 어느 순간 멍 때리고 있는 나를 한 84번 본 듯^^;

앞으로 뭘 공부해야 할지 좀 찾아봐야겠다....