최근에 문법이 조금 바뀌어서 함수 안에서의 연산 수식결과 값을 바로 활용하지 말고 지역변수로 담아 놓고 사용하도록 하자.
게임 컨텐츠 마다 작업이 다르게 들어가는 부분이.
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축 방향으로 밀리는 것을 만들고 싶다면은