GetComponent( ) 메서드
원하는 타입의 컴포넌트를 자신의 게임 오브젝트에서 찾아오는 메서드입니다.
Rigidbody = GetComponent<Rigidbody>();
※ 제네릭: GetComponent ( ) 메서드에서 사용한 꺽쇠 <>는 제네릭(Generic)기법입니다. 제네릭은 메서드나 클래스가 여러 타입에 호환되게 합니다. 꺽쇠 안에 원하는 타입을 명시하면 클래스나 메서드가 해당 타입에 맞춰 동작합니다. 제네릭을 사용하지 않으면 같은 처리를 위한 여러 타입의 메서드나 클래스를 일일이 만들어야 합니다.
(이동) GetAxis( ) 메서드
어떤 축에 대한 입력값을 숫자로 반환하는 메서드입니다.Input.GetAxis( ) 메서드는 축의 이름을 받습니다.
이 스트링은 입력 매니저 설절 창에서 수정도 가능합니다.
경로: Edit > Project Settings... Input Manager > Axes 리스트 펼치기
입력을 숫자로 받는 이유가 뭘까 ?
키보드의 키를 눌렸을 때 true, 누르지 않았을 때 false로 단순하게 구분할 수 있지만, 게임 패드의 아날로그 스틱은 '살짝'미는 것이 가능합니다. 게임 패드의 조이스틱을 안 밀었을때는 가만히 서있고 살짝 밀었을 때는 몬스터에게 들키지 않게 천천히 걷는 동작을 실행하고 모두 밀었을때는 일반적인 속도의 걸음걸이를 하고 싶다면 입력을 true, false로는 표현이 불가능합니다. 이러한 문제를 해결하기 위해 '얼마나'밀었는지 감지하기 위해 Input.GetAxis는 축에 대한 입력값을 숫자로 반환합니다.
(충돌) OnTriggerEnter 또는 OnCollisionEnter
게임 오브젝트와 컴포넌트는 충돌 종류에 따라 OnTriggerEnter 또는 OnCollisionEnter 메세지를 받습니다. 또한 충돌 메세지에는 충돌한 상대방 게임 오브젝트에 대한 정보도 함께 첨부됩니다. A에는 충돌한 B게임 오브젝트 정보가. B에는 충돌한 상대방 A게임 오브젝트의 정보가 전달됩니다. 따라서 충돌한 상대방 게임 오브젝트가 어떠한 오브젝트인지 충돌 메세지를 통해 알 수 있으며, 어떤 대응을 해야 하는지도 결정할 수 있습니다.
충돌 메세지를 발생시키는 것은 리지드바디 컴포넌트입니다. 따라서 충돌 이벤트 메서드를 사용하려면 서로 충돌 중인 게임 오브젝트 중에서 최소 하나의 오브젝트는 리지드바디 컴포넌트를 가지고 있어야합니다. -
상황 | OnCollision 계열: 일반 충돌 | OnTrigger 계열: 트리거 충돌 |
타입 특징 | 충돌 관련 정보를 담는 단순 정보 컨텐이너 상대방 게임 오브젝트, 충돌 지점, 충돌 표면의 방향등을 반환함. |
트리거 충돌은 일반적인 충돌과 달리 서로 밀어내지 않고 그대로 통과힘. 충돌한 상대방 게임 오브젝트를 반환함. |
충돌한 순간 | OnCollisionEnter(Collision collision) | OnTriggerEnter(Collider other) |
충돌하는 동안 | OnCollisionStay(Collision collision) | OnTriggerStay(Collider other) |
충돌했다가 분리되는 순간 | OnCollisionExit(Collision collision) | OnTriggerExit(Collider other) |
FindObjectOfType()
FindObjectOfType( ) 메서드는 씬에 존재하는 모든 오브젝트를 검색하여 원하는 타입의 오브젝트를 찾아냅니다.FindObjectType( ) 메서드는 처리 비용이 크기 때문에 Start( ) 메서드처럼 초기에 한 두번 실행되는 메서드에서만 사용해야 합니다.
FindObjectOfType | FindObjectsOfType |
해당 타입의 오브젝트를 하나만 찾음. | 해당 타입의 오브젝트를 모두 찾아 배열로 반환. |
※ 출처: 레트로의 유니티 게임 프로그래밍 에센스: C#으로 배우는 입문부터 4가지 게임 제작까지.
공부 목적으로만 사용하였습니다.
'🎯 game engine > ◽ 유니티(unity)' 카테고리의 다른 글
(unity) 생명주기,unity Lifecycle, 이벤트 함수의 실행 순서, 코루틴 (0) | 2022.09.15 |
---|---|
(unity) 속도와 시간 간격 (0) | 2022.07.12 |
(unity) MonoBehaviour? 메세지 기반 방식? 유니티 이벤트 메서드? (0) | 2022.07.11 |
(unity/warning CS0108, NullReferenceException) (0) | 2022.04.18 |
(Unity/ error: CS8357) deterministic compilation failed (0) | 2022.04.16 |
안 하는 것 보다 낫겠지
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!