[retr0 Unity]DodgeGame_02: 플레이어 이동, 충돌이벤트, Prefab

k_dah·2021년 7월 16일
0

unity

목록 보기
7/15

"레트로의 유니티 게임 프로그래밍 에센스" 책을 참고하여 작성하였다.


- GetComponent() 메서드

: 원하는 타입의 컴포넌트를 자신의 게임 오브젝트에서 찾아오는 메서드

- 사용자 입력에 따른 Player 게임오브젝트 이동 구현

방법1 : Input.GetKey() 메서드 + Rigidbody.AddForce() 메서드

AddForce() 메서드는 누적된 힘으로 속도를 점진적으로 증가시키는 원리이기 때문에 속도가 충분히 빨라질 때까지 시간이 걸리게 된다.
또한 이동 중에 반대 방향으로 이동하려는 경우 관성에 의해 힘이 상쇄되어 방향 전환이 금방 이루어지지 않는다.

방법2 : Input.GetAxis() 메서드 + Rigidbody.velocity 변수

GetAxis() 메서드는 어떤 축에 대한 입력값을 숫자(-1.0, 0, 1.0)로 반환한다.
Rigidbody 컴포넌트는 현재 속도를 표현하는 Vector3 타입의 velocity 변수를 제공한다.

Rigidbody 의 AddForce() vs velocity

AddForce()

: 힘을 누적해서 속력을 점진적으로 증가

velocity

: 이전 속도를 지우고 새로운 속도를 사용 -> 관성을 무시하고 속도가 즉시 변경됨

+gameObject는 컴포넌트 입장에서 자신이 추가된 게임 오브젝트를 가리키는 변수
+gameObject(변수) != GameObject(타입)

- isTrigger 콜라이더

: 충돌한 물체를 밀어내는 물리적인 표면이 없다
"다른 일반 콜라이더와 겹치거나 서로를 뚫고 지나갈 수 있지만 충돌 자체는 감지한다"

- Prefab

: 언제든지 재사용할 수 있는 미리 만들어진 게임 오브젝트 파일
비슷한 게임 오브젝트를 여러 개 만들 때 매번 다시 설정하는 번거로움을 줄일 수 있다.
해당 게임 오브젝트를 Hierarchy 창에서 Project 창으로 Drag&Drop 해주면 Prefab이 생성된다.

- 충돌 이벤트 메서드

- OnCollision 계열 : 일반 콜라이더를 가진 두 게임 오브젝트가 충돌할 때 자동 실행됨
- OnTrigger 계열 : 충돌한 두 게임 오브젝트의 콜라이더 중 하나 이상이 트리거 콜라이더일 경우 자동 실행됨

- FindObjectOfType() 메서드

: 씬에 있는 모든 오브젝트를 검색해서 해당 타입의 오브젝트를 가져옴
+처리 비용이 크기 때문에 Start() 메서드 처럼 초기에 한두 번 실행되는 메서드에서만 사용해야 한다. Update() 메서드에서 사용하면 프로그램이 느려질 수 있다.
+FindObjectsOfType() 메서드는 해당 타입의 오브젝트를 모두 찾아 배열로 반환

- Time.deltaTime

초당 프레임은 컴퓨터 성능에 따라 다르기 때문에 Update() 실행 사이의 시간 간격을 알기 위해 내장 변수 Time.deltaTime을 사용한다.
Time.deltaTime에는 이전 프레임과 현재 프레임 사이의 시간 간격이 자동으로 할당된다.

- Instantiate()메서드

게임 도중에 실시간으로 게임 오브젝트를 생성할 때 사용한다. 원본 오브젝트를 인자로 넣어주면 해당 오브젝트를 복제한 오브젝트(인스턴스)를 생성해 준다.

- transform의 LookAt() 메서드

다른 게임 오브젝트의 transform을 입력받고 해당 transform의 게임오브젝트를 바라보도록 자신의 transform rotation을 변경한다.

- Transform 타입의 Rotate() 메서드

입력값으로 X, Y, Z 축에 대한 회전값을 받고, 현재 회전 상태에서 입력된 값만큼 상대적으로 더 회전한다.

profile
개똥이

0개의 댓글

관련 채용 정보