일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 효과음
- 유니티
- 스택
- c#
- 유한상태머신
- 메서드
- 프로그래머스
- script
- ObjectPool
- 자료구조
- unity
- skybox
- invokec#events
- FSM
- 직렬화
- BGM
- UI
- 람다식
- 장애물달리기
- inputsystem
- delegate
- 배열
- 스파르타내일배움캠프
- 인터페이스
- 코루틴
- LINQ
- Generic
- InputManager
- 비선형자료구조
- soundmanager
- Today
- Total
Unity 개발일지
[Unity] 충돌에 대해 알아보자 본문
[충돌에 필요한 것]
[COLLIDER]
1. Edit Collider: 오브젝트의 충돌 범위를 조절할 수 있다.
2. Material: Physics Material 적용 옵션 (Physics Material 2D)
충돌 재질에 따라 마찰(Friction), 탄성(Bounciness)을 적용할 수 있는 Material을 적용할 수 있다.
3. Is Trigger
활성화시키면 충돌은 감지하지만 물리계산은하지 않음(트리거)
4. Used By Effector
한쪽방향은 통과, 한쪽방향은 충돌하도록 설정할 수 있다.
(Playform Effector 2D 컴포넌트로 발판 만들기)
5. Used By Composite
부모자식 관계의 Collider 컴포넌트가 있는 오브젝트가 겹쳐있을 때 겹쳐있는 부분의 Collider를 하나로 이어준다.
Composite Collider 2D 추가 필수, BoxCollider만 사용 가능
6. AutoTiling
활성화 시 타일링 했을 때 Collider가 자동으로 설정
7. Offset: 콜라이더의 위치 조절
8. Size: 콜라이더의 사이즈 조절
9. Edge Radius
모서리부분의 Collider를 설정한 값으로 깎아 둥글게 만듦 (Collider범위도 커진다.)
10. Direction(Capsule Collider) Collider의 방향조절
[RigidBody]
- Body Type : Dynamic
다른 모든 타입과 충돌하고 중력과 힘의 영향을 받는다.
1. Material: Physics Material 적용 옵션
2. Simulated: 물리 계산 실행 옵션 (해제 시 물리연산X)
3. Use Auto Mass: 질량 자동 계산 옵션
4. Mass: 질량 수치 옵션
5. Linear Drag: 선형 움직임 저항 옵션 (바닥마찰, 이속디버프)
6. Angular Drag: 회전 움직임 저항 옵션 (공기저항, 윤활유)
7. Gravity Scale: 중력 값 옵션
8. Collision Detection: 충돌 감지 옵션
Continuous로 설정 시 영구적으로 충돌 차단(벽돌버그)
9. Sleep Mode: 오브젝트 휴면 상태 프로세서 옵션
Never Sleep - 오브젝트가 비활성화되어도 물리현상을 멈추지 않음 (유니티에서 사용하지 않는 것을 권장)
Start Awake - 오브젝트가 활성화 되면 켜짐
Start Asleep - 물리충돌이 일어날 시 켜짐(그 전까진 휴면상태)
10. InterPolate: 물리 업데이트 보간 옵션(프레임과 프레임 사이 추정값)
None - 보정없음
Interpolate - 이전 프레임을 기반으로 보정하여 움직임을 부드럽게 보정
게임의 프레임 속도가 물리 업데이트 속도보다 훨씬 높을 때 물리 개체의 움직임을 부드럽게 만드는 데 유용 예를 들어 레이싱 게임에서 보간을 사용하여 게임이 높은 프레임 속도로 실행되는 경우에도 자동차의 움직임
이 더 부드럽게 보이도록 할 수 있습니다.
Extrapolate - 다음 프레임의 움직임을 추정해서 움직임을 부드럽게 보정
보간에 의해 도입될 수 있는 인지 지연을 줄이려는 경우, 특히 개체가 플레이어 입력에 의해 직접 제어되는
경우에 유용. 예를 들어 플레이어가 캐릭터의 움직임을 직접 제어하는 빠르게 진행되는 액션 게임에서는
Extrapolate를 사용하여 캐릭터의 움직임이 물리 시스템에 의해 구동되는 경우에도 더 빠르게 반응하도록
할 수 있습니다.
11. Constraints - Position, Rotation 고정 옵션
- Body Type : Dynamic
Dynamic 타입의 콜라이더만 충돌하고 나머지 타입은 충돌X
(물리연산X -> 코드로 제어하기 알맞음)
Use Full Kinematic Contacts: 모든 타입과 충돌
하지만 충돌 후 물리엔진 적용되지 않음(충돌감지)
- Body Trpe : Static
Dynamic타입의 Rigidbody와 충돌한다
움직이는 물체를 Static으로 설정하면 움직이지 않음
[OnCollision2D, OnTrigger2D]
충돌에 대한 개념은 이해했는데 언제 뭘 써야될까?
체크하는 쪽이 콜라이더, 충돌하는 쪽은 콜라이더 -> OnCollision2D
체크하는 쪽이 콜라이더, 충돌하는 쪽은 트리거 -> OnTrigger2D
체크하는 쪽이 트리거, 충돌하는 쪽은 콜라이더 -> OnTrigger2D
체크하는 쪽이 트리거, 충돌하는 쪽은 트리거 -> OnTrigger2D
간단히 말하면 한쪽이라도 isTrigger를 적용한다면 OnTrigger2D를 사용하면 된다.
[같은팀과는 충돌을 하고싶지 않아요!]
보통 게임을 보면 적과는 충돌을 하지만 아군끼리는 충돌을 하지 않는 경우가 많다.
이 경우에는 아군은 동일한 Layer에 설정을 해두고 Edit - Project Settings - Physics2D - Layer Collision Matrix 에서 Default끼리의 충돌을 체크 해제 해주면 충돌하지 않는다.
'Unity 개발' 카테고리의 다른 글
[Unity] SkyBox로 낮과 밤 구현하기 1 (0) | 2024.05.28 |
---|---|
[Unity] RayCast(레이캐스트) (0) | 2024.05.27 |
[Unity] Coroutine(코루틴)에대해 알아보자 (0) | 2024.05.22 |
[Unity] 오브젝트풀(ObjectPool) 만들기 복습 (0) | 2024.05.21 |
[Unity] 싱글톤 기능 구현하기 (0) | 2024.05.20 |