: 원하는 타입의 컴포넌트를 자신의 게임 오브젝트에서 찾아오는 메서드
AddForce() 메서드는 누적된 힘으로 속도를 점진적으로 증가시키는 원리이기 때문에 속도가 충분히 빨라질 때까지 시간이 걸리게 된다.
또한 이동 중에 반대 방향으로 이동하려는 경우 관성에 의해 힘이 상쇄되어 방향 전환이 금방 이루어지지 않는다.
GetAxis() 메서드는 어떤 축에 대한 입력값을 숫자(-1.0, 0, 1.0)로 반환한다.
Rigidbody 컴포넌트는 현재 속도를 표현하는 Vector3 타입의 velocity 변수를 제공한다.
Rigidbody 의 AddForce() vs velocity
AddForce()
: 힘을 누적해서 속력을 점진적으로 증가
velocity
: 이전 속도를 지우고 새로운 속도를 사용 -> 관성을 무시하고 속도가 즉시 변경됨
+gameObject는 컴포넌트 입장에서 자신이 추가된 게임 오브젝트를 가리키는 변수
+gameObject(변수) != GameObject(타입)
: 충돌한 물체를 밀어내는 물리적인 표면이 없다
"다른 일반 콜라이더와 겹치거나 서로를 뚫고 지나갈 수 있지만 충돌 자체는 감지한다"
: 언제든지 재사용할 수 있는 미리 만들어진 게임 오브젝트 파일
비슷한 게임 오브젝트를 여러 개 만들 때 매번 다시 설정하는 번거로움을 줄일 수 있다.
해당 게임 오브젝트를 Hierarchy 창에서 Project 창으로 Drag&Drop 해주면 Prefab이 생성된다.
: 씬에 있는 모든 오브젝트를 검색해서 해당 타입의 오브젝트를 가져옴
+처리 비용이 크기 때문에 Start() 메서드 처럼 초기에 한두 번 실행되는 메서드에서만 사용해야 한다. Update() 메서드에서 사용하면 프로그램이 느려질 수 있다.
+FindObjectsOfType() 메서드는 해당 타입의 오브젝트를 모두 찾아 배열로 반환
초당 프레임은 컴퓨터 성능에 따라 다르기 때문에 Update() 실행 사이의 시간 간격을 알기 위해 내장 변수 Time.deltaTime을 사용한다.
Time.deltaTime에는 이전 프레임과 현재 프레임 사이의 시간 간격이 자동으로 할당된다.
게임 도중에 실시간으로 게임 오브젝트를 생성할 때 사용한다. 원본 오브젝트를 인자로 넣어주면 해당 오브젝트를 복제한 오브젝트(인스턴스)를 생성해 준다.
다른 게임 오브젝트의 transform을 입력받고 해당 transform의 게임오브젝트를 바라보도록 자신의 transform rotation을 변경한다.
입력값으로 X, Y, Z 축에 대한 회전값을 받고, 현재 회전 상태에서 입력된 값만큼 상대적으로 더 회전한다.