본문 바로가기

게임 개발 공부 정리

[Unity] 기초 내용 1 (Obj Life Cycle, 사용자 입력, 벡터 이동) - 20 09 19

오브젝트 라이프 싸이클

초기화 영역

Awake

게임 오브젝트가 최초로 생성되어 생겨날때, 한번만 실행 된다.

Start

Update 시작전에 한번 실행 된다. 


OnEnable

게임 오브젝트가 활성화 되었을 때 실행된다.

키고 끌때 실행된다고 생각하면 된다.

비활성화/활성화를 자주 반복하게 되면 계속 실행이 된다.

반면, Awake는 생성될때여서 한번만 실행된다.


물리 연산 영역

FixedUpdate - 프레임 영역

물리 연산을 하기전에 실행되는 함수이다.

고정된 실행 주기로 CPU를 많이 사용하여 부하가 많이 생긴다. 기본적 로직만 넣는다


게임 로직 영역

Update - 프레임 영역

환경에 따라 실행 주기가 떨어져서 가변적으로 변할 수 도있다.
게임 프레임 당 한번로 실행 된다.

 

LateUpdate - 프레임 영역
모든 업데이트가 끝난 후 사용된다.


OnDisable

게임 오브젝트가 비활성화 될때 실행된다. 


해체 영역

OnDestroy

게임 오브젝트가 삭제될때 실행된다.


사용자 입력 - 1.키 입력

Input

게임 내에서 입력을 관리하는 클래스이다.

 

Input.anyKey

아무 입력을 받고있을떼 true (bool)값을 반환한다.

anyKeyDown

아무 입력이 한번 눌렸을때 값을 반환한다.

anyKeyup

아무 입력이 한번 눌리고 땠을때 값을 반환한다.


KeyCode

키보드안의 다양한 코드들에 대해서 관리하는 클래스이다.

대표적인 멤버변수로는 키의 값을 반환해 주는 KeyCode.(특정 키 코드)가 있다.

 

Input.GetKey/Down/Up

아무 키보드 버튼을 입력받으면 true 값을 반환한다.

 

GetKey~는 함수로 취급이 되며, 파라미터안에 KeyCode.특정 키 코드 를 입력하여 특정 키의 값을 받을 수 있다.


GetMouseBoutton/Up/Down

마우스 버튼의 입력을 받으면 true값을 반환하는 함수이다.

파라미터에는 0이나 1을 넣으면 되는데,

0은 마우스 왼쪽 클릭을, 1은 마우스 오른쪽 클릭을 뜻하는 값이다.


사용자 입력 - 2.버튼 입력

InputManager 설정

유니티에서 지원하고 정의해주는 Input이다.

개발자가 특정 키안의 설정을 변경하거나, Size를 늘려서 새로운 키를 추가할 수 있다.

예를 들어, Horizontal이라 정의되는 값은 left, right 혹은 a, d로 되어있다,.

출처 : 골드 메탈 유튜브

GetButton/Up/Down(" ")

인풋 매니저에서 지정해주는 키를 이용해서 입력 받게 해주는 것이다.

파라미터의 값은 설정에서 봤던 키들을 문자열의 형태로 넣어주면 된다.


사용자 입력 - 3.축 입력

GetAxis(" ")

InputManager의 Horizontal과 Vertical 값은 GetAxis를 이용해서 누른지 경과한 시간에 따라 0부터 1까지의 실수들을 float으로 반환한다.

수평, 수직 버튼 입력을 받으면 float값을 반환한다.

하지만 확실한 -1, 0, 1를 받고싶으면 GetAxisRaw를 사용하면 된다.


오브젝트 이동 - Transform

게임 오브젝트를 생성하면 반드시 Transform 컴포넌트가 생성된다.

Transform 또한 하나의 클래스이므로 스크립트에서 다양한 조작이 가능하다.

transform은 기본으로 존재하는 것이기 때문에, 스크립트상에서 따로 정의해줄 필요가 없다.

즉, 오브젝트는 변수 transform을 항상 가지고 있다.

 

Translate()

Transform 클래스에 존재하는 함수인데, 벡터 값을 현재의 위치에서 더해주는 역할을 한다.

 

간단한 사용 예

public class Test : MonoBehaviour
{
	void start()
    {
       	Vector3 vec = new Vector3(5, 0, 0);
        transform.Translate(vec);
            
    }
}

백터 개념 추가 정보

https://blog.naver.com/gold_metal/221439355107

 

[유니티 강좌] Vector3와 친해지길 바라

게임은 가상 공간 안에서 행해지는 것이므로 차원, 벡터는 필수입니다.이 포스팅에서는 오브젝트의 트랜스...

blog.naver.com

링크 출처 : 골드 메탈 블로그