코딩 공부/Unity C#

충돌 감지 -1-

recordmastd 2024. 6. 10. 19:58

충돌 감지(Collision Detection)

- 두 오브젝트 사이의 충돌을 감지한다

- 두 2D 오브젝트가 2D Colliders를 가지고 있으면 자동적으로 Physics 2D 엔진이 충돌을 감지한다

 

충돌 해결(Collision Resolution)

- 충돌이 감지됐다는 전제 하에 어떤 행동을 한다

- 2D Physics 머터리얼을 추가하여 2D 물리 엔진이 충돌을 해결하는 방식을 조정할 수 있다

- 우리가 직접 충돌 해결을 구현할 수 있다    (스크립트를 통하여)


랜덤한 크기와 방으로 오브젝트 움직이기

- 최소 속도 MinImpulseForce, 최고 속도 MaxImpulseForce

- 각도의 범위는 0 ~ 2 π (= 0도 에서 360도)

Unity는 삼각함수를 구할 때 라디안 단위를 사용. 처음부터 라디안 단위 사용을 추천함

- x성분은 코사인을 사용하고, y성분은 사인을 사용하는 이유는 아래 사진을 참고 ↓

사인(y)과 코사인(x)

- magnitude느 최소 충격력과 최대 충격력의 범위를 설정함

- AddForce의 첫번째 인수는 Vector2D임. direction(Vector2D) * magnitude(float)Vector2D

 

게임 오브젝트가 게임 화면 속에서 영원하기를 바래요

콜라이더의 종류가 많다

- Box Collider 2D 선택

→ 오브젝트(곰돌이)가 박스 모양이기 때문에 콜리더도 박스로 선택

 

오브젝트와 충돌

- 녹색 박스선이 충돌기

더 좁아진 충돌기 박스

- 콜라이터 박스는 조정이 가능함

메인 캠에 엣지 콜라이더 4개 추가

- 엣지 콜라이더를 가장자리에 배치해야 오브젝트가 뷰의 가장자리에 충돌이 됨

(박스 콜라이더는 오브젝트와 겹쳐서 진작 충돌이 됨)

 

위의 과정을 하면 오브젝트가 밖으로 나가지는 않지만 가장자리에서 질질 끌림

(= 가장자리에 충돌해도 통통튀지않음)