본문 바로가기
게임 개발(유니티)/멋쟁이 사자처럼 3기_회고록

[멋쟁이사자처럼 유니티 TIL] 2024_11_25(월) 강의 요약 및 정리

by goraku97 2024. 11. 25.

함수의 반환값

함수의 반환값 유무

 

- Void : 함수의 반환값이 없는 경우 (기능이 있는 상자만 만들어진 상태)

해당 함수는 체력을 감소시키고 끝남.

- Int, Bool, Floot... 타입 : 함수에 반환값이 있는 경우 (기능이 있는 상자에 값도 반환이 됨)

해당 함수는 호출한 쪽에 체력 값을 전달

 

맴버변수, 지역변수, 매개변수 차이점

- 다른 클래스에 있는 것들을 사용하고 싶을때는 매개변수 지정

         (ex. 접근제한자(public,private...) 클래스 타입(void,int,float...)

         변수명(소문자로 작성) (매개변수 작성))

 

- 어떤 값에 접근하려면" . "를 기입해야함

 

컴포넌트 (Component) 

게임 오브젝트(GameObject)에 붙이는 부품(기능), Unity에서 제작해둔 기능

 

-매쉬(Mesh) :

  3D 모델의 모양이나 형태를 정의하는 데이터 구조

  (프리미티브 오브젝트(Primitive Object) 와 같은 메쉬(Mesh) 데이터를 설정가능) 

                             

- 매쉬 랜더러(Mesh Renderer) :

  게임 오브젝트의 매쉬(Mesh)를 그리는(Render) 컴포넌트(Component)

                                                   

 

Component 접근 및 추가

GetComponent 앞에 ' . ' 이 반드시 들어가야함

 

.AddComponent 는 추가, .GetComponent 는 접근

 

 

 

 - MeshRenderer 컴포넌트에 접근하여 컴포넌트 비활성화하기

.enabled = false 는 비활성화

 

유니티에서 모든 오브젝트들에는 Transform 컴포넌트가 있음(필드에 ‘존재’ 는 해야 하기때문에)

 


[예제] 객체 움직이기

 

 

 

- 키를 눌렀을 때 이동

+= 은 오른쪽값을 왼쪽값에 더함

 

- 키를 누르고 있는 상태일 때 이동

오브젝트가 매 프레임마다 5 유닛만큼 이동하는 대신, Time.deltaTime을 곱해서 프레임 간격에 비례하여 움직이도록 만듬.

 

- Time.deltaTime : 이전 프레임과 현재 프레임 사이의 시간 간격을 의미

    프레임 속도와 무관하게 일정한 이동 속도를 유지

    또는, 프레임 속도가 변동하더라도 일관된 속도로 게임 오브젝트를 움직이거나

    애니메이션을 처리하는 데 사용됨.

 

- 정규화

오브젝트 균일한 이동이 필요할때 사용 (모든 방향의 벡터 길이가 1 이어야 방향에 따른 이동 속도가 같아지기 때문)

- 정규화를 사용해서 이동하기

 

Translate(vec); → 로컬 기준 이동 (회전/부모 영향 받음) 

position += vec; → 항상 월드 기준 이동 (벡터 그대로 더함)  

 

- private float h = 0f, private float v = 0f

  // 수평값(h), 수직값(v) 을 저장하기 위해 해당 코드를 작성

  // 외부 클래스에서 수정되면 오작동할 수 있기 때문에, 보안 수준이 높은 private 사용.

  // 초기값을 선언(상기의 코드에서는 0) 함으로서, 기본값이 0부터

     시작하도록 의도한 것임을 명시함.

     초기값을 선언하면 디버깅이나 테스트 중 비정상적인 값

     사용되는 경우를 더 쉽게 파악할 수 있게 됨.

 

- h = Input.GetAxis("Horizontal")

   // Unity의 Input Manager를 통해 "Horizontal" 축 입력을 가져옴.

   // 값은 -1에서 1 사이로, -1왼쪽(기본 A키), 1오른쪽(기본 D키)을 나타냄.

 

- v = Input.GetAxis("Vertical")

    // Unity의 Input Manager를 통해 "Vertical" 축 입력을 가져옴.

    // 값은 -1에서 1 사이로, -1뒤로(기본 S키), 1앞으로(기본 W키)를 나타냄.

 

- Vector3 dir = new Vector3(h, 0, v).normalized

    // new Vector3(h, 0, v): h(수평 입력)와 v(수직 입력)를 기반으로 방향 벡터를 생성

       y축이 0 이기 때문에, 위 아래(y축) 은 고정된 상태에서, x, z 방향으로 이동할 방향을 설정

    

   // .normalized : 벡터의 크기를 1로 정규화. 규화는 방향은 유지하되 크기를 일정하게 만들어, 

                            입력 강도에 상관없이 일정한 속도로 이동하도록 보장.

 

- transform.position += dir * Time.deltaTime * moveSpeed

   // 현재위치(transform.position) 에, 방향(dir) * Time.deltaTime * 이동속도 를 곱한값을 업데이트.

 

- Debug.Log(dir)

   // 매 프레임마다 계산된 이동 방향 벡터(dir)를 콘솔에 출력

      W 키 입력시 (0, 0, 1), A 키 입력: (-1, 0, 0), W + D 입력: (0.7, 0, 0.7)