일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 코테
- Algorithm
- 2468 c++
- Lv2
- 백준 1103번 c++
- 오브젝트 풀링
- c++
- 프로그래머스
- 백준 1103번
- 코딩테스트
- 플레이어 이동
- 백준
- Unity
- 2870번 수학숙제 c++
- 2870번 수학숙제
- Lv.3
- 백준 17070번 c++
- 2870번 c++
- 백준 2870번
- 17070번
- 백준 17070번
- 수학숙제
- 백준 c++ 2468번
- C#
- 백준 c++ 2870번
- Beakjoon
- 유니티
- 백준 1103번 게임
- 2870번
- dfs
- Today
- Total
주녘공부일지
[Unity3D] Collision (충돌) 본문
1. Collider
충돌체의 기본 클래스로 충돌체의 범위, 재질 등을 나타냄
- 충돌체의 모양에 따라 BoxCollider, SphereCollider, CapsuleCollider, MeshCollider, 등이 있음
Is Trigger : rigidbody에 충돌을 연산하지 않고 충돌 감지 시에 OnTriggerXX함수 호출
2. RIgidbody
충돌을 감지하기 위해 사용하는 컴포넌트
- 오브젝트를 물리 엔진이 제어하게 만들 수 있음 ( + 중력 )
is Kinematic : 물리 연산 여부 ( 체크 시 충돌에 관한 물리 연산을 하지 않음 )
+ 물리연산을 하지 않으므로, 중력도 적용되지 않음
Interpolate : 고정 프레임율에서 동작하는 물리효과를 보간할때 사용
Collision Detection : 충돌 감지 모드 설정
Constraints : 오브젝트의 물리연산 시에 각 축에 대한 위치, 회전을 고정시킬지 여부
3. 충돌 이벤트 ( Collision, Trigger )
1) Collision ( 물리 연산o )
- 충돌하는 자신 혹은 상대에게 Rigidbody 컴포넌트가 존재해야 함 ( isKinematic 비활성화 )
- 충돌하는 두 오브젝트에 Collider 컴포넌트가 존재해야 함 ( isTrigger 비활성화 )
- OnCollisionEnter : 다른 Collider가 영역으로 들어왔을 때 호출
- OnCollisionStay : 다른 Collider가 영역내에 있을 때 반복 호출
- OnCollisionExit : 다른 Collider가 영역 내에 존재하다가 벗어나면 호출
( 매개변수는 스크립트를 가진 콜라이더와 충돌한 콜라이더가 전달됨 )
2) Trigger ( 물리 연산x )
1) 충돌하는 자신 혹은 상대에게 Rigidbody가 존재해야 함 ( 둘중 하나는 isTrigger 활성화 )
2) 충돌하는 두 오브젝트에 Collider 컴포넌트가 존재해야 함
- OnTriggerEnter, OnTriggerExit, OnTriggerStay : OnCollisionXX 함수와 같은 조건으로 호출
+ OnTriggerXX함수와 OnCollisionXX함수는 같이 호출되는 경우가 없음
( isTrigger 옵션이 활성화 되면, 물리 연산을 하지 않아 OnCollisionXX 함수가 호출되지 않음 )
+ Rigidbody의 Constraints로 물리 연산 시에 Position, Rotation을 고정시켜 사용하는 것도 가능
+ 2D는 OnCollisionXX2D, OnTriggerXX2D 으로 사용 ( ex. OnTriggerEnter2D )
Collision, Trigger action matrix
여러가지 경우의 수가 존재하고, 버전에 따라 조금씩 다르게 동작하는 경우도 있을 수 있기 때문에 사용할 때 잘 확인하는 것이 좋음
'GameDevelopment > [Unity] Class, Pattern' 카테고리의 다른 글
[Unity3D] Camera (0) | 2022.03.01 |
---|---|
[Unity3D] Physics.Raycast (+LayerMask) (0) | 2022.02.24 |
[Unity3D] Rotation (회전) (0) | 2022.02.21 |
[Unity3D] Vector3 (0) | 2022.02.21 |
[Unity3D] position (위치) // 플레이어 이동 예제 (0) | 2022.02.21 |