프로젝트/[인프런] 게임 프로그래머 입문 올인원

[게임 프로그래머 입문 올인원] 2D 포폴 준비 : 충돌 처리(111강)

순정법사 2024.09.08

[게임 프로그래머 입문 올인원] Windows API 입문 :  (86강)

A. 2D 포폴 준비

4. 충돌 처리 

a. 충돌 감지하기

저번에 충동을 처리한 부분은 '감지'를 했다고 보는게 맞음

 

 

 


 

💥 오류 수정

 

갑자기 액세스 위반이 뜸.. 보니까 데이터가 잘못 들어간 모양

 

위에서 SetTileMap을 주석처리 했더니 값 설정을 안해줘서 다른값이 들어가서 그럼!

 


 

충돌 테스트하는 코드를 다시 만들어주고

 

이렇게 겹치면

 

여기에 브레이크 포인트를 걸어서

 

함수로 잘 들어오는지까지 확인!

 

b. 충돌 박스 정보 가져오기

충돌처리하는 부분은 두가지 방법이 있음

 

1. 갈수있는지 판단 후 처리

2. 일단 충돌 후 반대방향으로 밀어주기

 

먼저 박스 콜라이더를 활용해서 만들 예정

 

박스 위치를 가져오고

 

박스 정보를 만들어준다

 

c. 충돌 처리 코드 맞춰주기

여기서 기본 Collider에 적혀져 있는 충돌 코드를 보면 

 

이렇게 거리를 각자 구해서 계산을 하고 있는데

 

이게 GetRect와 살짝 다를 수 있고, 여기서 오는 버그가 생길 수 있기 때문에 

위에서 생성한 GetRect 함수를 이용해서 오차를 줄여주는 방식으로 새로 작성한다

 

수학적으로 해도되지만, 우리는 함수를 사용하자!

 

나머지 코드들도 구글링해서 이런 방식으로 수정하면 됨

 

d. 충돌처리 코드 작성

두 번째로 생각했던 뒤로 밀쳐서 튕겨내는 코드 작성

 

플레이어 끼리 만나면 튕기는 함수를 만들어주고

 

사실 이런 코드는 따로 충돌처리 (물리) 코드로 뽑아야 하지만

여기선 연습이기 때문에 플레이어 코드 안에 작성

 

어느 방향으로 충돌되었는지는 x, y좌표를 계산해보면 나옴 

여기서 박스콜라이더를 각각 보내주고

 

위치를 맞춰주는 코드를 작성한다

 

💥 이때 부들부들 거리는 현상이 생길 수 있는데 

 

Tick이라는 함수가 모든걸 업데이트 중인데, 순간적으로 카메라 위치가 바뀌면서

플레이어와 카메라 위치가 달라 부들거리는 현상이 생길 수 있음

 

👉 따라서 Tick 종류도 다양하게 생겨나는것!

 

 

 


출처 : https://www.inflearn.com/course/%EA%B2%8C%EC%9E%84-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8-%EC%9E%85%EB%AC%B8-%EC%98%AC%EC%9D%B8%EC%9B%90-rookiss#curriculum

 

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버 -

어디부터 시작할지 막막한 게임 프로그래밍 입문자를 위한 All-In-One 커리큘럼입니다. C++, 자료구조/알고리즘, STL, 게임 수학, Windows API, 게임 서버 입문으로 이어지는 알찬 커리큘럼으로 게임 프

www.inflearn.com