WinAPI 70 RigidBody(7)

CJB_ny·2022년 10월 13일
0

WinAPI

목록 보기
73/79
post-thumbnail

오늘 배운거 👍👍👍

  • 최근에 문법이 조금 바뀌어서 함수 안에서의 연산 수식결과 값을 바로 활용하지 말고 지역변수로 담아 놓고 사용하도록 하자.

  • 게임 컨텐츠 마다 작업이 다르게 들어가는 부분이.

    OnSetGround 부분에서 점프킹처럼 경직되게 할려고 x, y축 속도 둘다 0으로 맞출 것인지 아니면 y축만 0으로 맞춰서 x축으로는 땅에 착지 했을 때 쭉 미끄러지게 구현할 것인지...


땅을 파고 들었을 때의 예외 처리를 하도록 하겠다.

현재 나의 중점 위치랑 땅의 중점위치를 구해서

나의 y좌표의 절반과 땅의 y좌표 절반을 더한다.

곂치지 않는다면은 땅의 y절반의 크기 + 나의 y절반의 크기가 일치해야하고

내가 땅을 뚫었다면은, 각각의 y 크기 절반보다 크기가 작을 것이다.

고려해야할 부분이 많다.

이렇게 부딪힐 수도 있다.

그리고 이런식으로 부딪힐 경우 어느쪽으로 밀어 줄 것인가??

그래서 이런것을 구별을 해줄 근거가 필요하다.

근거 ❗❗❗

이런것을 구별해줄 근거를 만들어야 하는데

위치 정보를 두가지로 나누어서 관리를 해야한다.

이전 프레임의 위치와 현재 프레임의 위치를 나누어서 가지고 있어야한다.

조건 체크를 할 부분이 엄청 많다.

구현 ❗❗❗

-1.f 하는 부분

이런식으로 코드 대충 만들고 나서 테스트를 하면은

딱 접한 상태로 밀어 올리게 된다.

CollisionEnter가 발생을 하면은 그 순간은 올리기는 하는데

Stay이일 경우 올리지를 못한다.

Enter, Stay 둘다 미묘한 차이로 CollisionStay 상태를 유지를 못하니까

value에서 - 1픽셀 만큼만 빼주어서 Stay상태가 유지되도록 해주자.

이제 중력을 주도록 하자.

중력 구현 ❗

이렇게 finalUpdate부분에서 중력을 구현해 줄 것이다.

고려를 해야할 몇가지 부분이

이미 가속도가 적용되어 있는 녀석한데 중력 까지 적용한다면

가속도가 더 커질 것이다.

아래방향으로 힘도 주는데 중력도 적용할 경우..

그래서 중력은 RigidBody에서 계산된 가속도에 추가

플러스 알파 느낌으로 가야한다.

이렇게 해주고 SetAccelAlpha도 구현을 해준다음에

RigidBody의 finalUpdate에서 45 번째에서

추가 가속도를 더 더해준다.

현재 내가 가는 벡터가 흰색인데 저 방향으로 가속도가 붙어서 가는데

하늘색 중력이 작용해서 최종 가속도는 빨간색 쪽으로 가게된다.

추가 가속도

현재 추가 가속도도 매프레임마다 초기화를 해주어야하고

또한 중력에 의한 가속도도 초기화를 해주어야한다.

매 프레임마다 고정적으로 10의 가속도가 있어야하는데

52번째 줄에서 가속도 _accel을 초기화를 하지 않아서 가속도가 계속 쌓인다.

컨텐츠 부분에 따른 부분 ❗❗

Gravity 클래스에서 땅 위에 있을 때 올라와 있는 녀석의
속도를 어떻게 할 것인지에 따른 함수인데

이게 컨텐츠에 따라 다르다.

점프킹 처럼 점프->착지 했을 때 딱 착지한 지점에 안착하고 싶다면은 속도를 0으로 맞추고

y축 방향으로의 속도는 없애고 약간 x축 방향으로 밀리는 것을 만들고 싶다면은

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글