티스토리 뷰
유니티 vs 연극
연극 | 유니티 게임 프로젝트 |
막 / 장면 | Scene |
인물 & 소품 | Object |
대본 | Script |
오브젝트의 라이프 사이클
: 초기화 > (활성화, onEanble) [물리 > 게임 로직] (비활성화, OnDisable) > 해체
- 초기화 영역 :
Awake: 오브젝트 생성시 최초 한번 초기화
Start: 업데이트 시작직전 / 프레임 시작 시, 최초 한번 실행
- 활성화 영역
OnEanble: 오브젝트가 활성화 될 때
- 업데이트 영역 :
fixedUpdate: 물리 효과가 적용된(Rigidbody) 오브젝트를 조정할 때 사용 (Update는 불규칙한 호출임으로 물리엔진 충돌검사 등이 제대로 안될 수 있음)
Update: 스크립트가 enabled 상태일때, 매 프레임마다 호출, 물리 효과가 적용되지 않은 오브젝트의 움직임이나 단순한 타이머, 키 입력을 받을 때 사용
LateUpdate: Update 함수가 호출된 후, 마지막으로 호출, 주로 오브젝트를 따라가게 설정한 카메라는 LateUpdate 를 사용(카메라가 따라가는 오브젝트가 Update함수 안에서 움직일 경우가 있기 때문)
- 비활성화 영역
OnDisable: 오브젝트가 비활성화 될시 호출
- 해체 영역
OnDestroy: 오브젝트가 삭제/해제 될때 사용.
입력 및 오브젝트 이동
키보드 / 마우스 입력
bool Input.GetKeyDown(KeyCode key) : 키보드를 누르는 순간 true
bool Input.GetKey(KeyCode key) : 키보드를 누르고 있는 동안 true
bool Input.GetKeyUp(KeyCode key) : 키보드를 눌렀다가 뗀 순간 true
bool Input.GetMouseButton(int button) : 마우스 버튼 누르는 순간 true
bool Input.GetMouseButton(int button) : 마우스 버튼 누르고 있는 동안 true
bool Input.GetMouseButton(int button) : 마우스 버튼 눌렀다가 뗀 순간 true
오브젝트 이동 및 transform
모든 오브젝트는 transform이라는 컴포넌트를 가지고 있는데, 이 트랜스폼 컴포넌트를 가지고 오브젝트의 위치 및 크기, 회전등을 구현할 수 있다.
transform에 관한 설명은 여기서 참고.
Unity C# > 컴포넌트 : Transform 와 프로퍼티/함수 모음 - 평생 공부 블로그 : Today I Learned 🌙 (ansohxxn.github.io)
transform 컴포넌트의 기초 함수
Translate(Vector2,3) : 상대적인 이동
Rotate(Vector2,3) : 상대적 회전
목표지점으로 이동
- 등속이동 : MoveTowards
transform.position = Vector2,3.MoveTowards(시작지점, 목표지점, 속도);
- 상대속도이동 : smoothDamp, lerp, slerp
transform.position = Vector2,3.smoothDamp(시작지점, 목표속도, 참조속도, 시간(반비례));
transform.position = Vector2.Lerp(transform.position, targetObject.transform.position, 0.005f(비례, 0~1 범위));
델타타임
직전 1 프레임이 수행되는데 걸린시간 (1초 / 해당 컴퓨터에서 1초에 수행되는 프레임 수)
주로, 멀티플레이 환경 등에서 컴퓨터의 환경이 달라 fps가 낮게나오는 컴퓨터에도 이동거리등이 같게 만들기 위해서 사용.
ex) Vector2.Lerp(현재위치,도착위치,t*Time.deltaTime);