WinAPI RigidBody (5)

CJB_ny·2022년 10월 12일
0

WinAPI

목록 보기
71/79
post-thumbnail

오늘 배운거 👍👍👍

  • switch 지역 변수의 범위

  • 중력 개념

  • 중력을 게임에 어떻게 적용시킬지에 대한 생각

  • 이단 점프 구현시 힘 OR 즉시 속도


_prevState = _curState하는 부분을 제일 뒤로 빼주도록 하자.

그래야 나의 상태에 따라서 UpdateState, UpdateMove등 Update시리즈에 걸려서 상태를 변경할지 말지를 정할 수 있으니까

현재 UpdateAnimation에서 내가 스위치문 쓰면서 이전에

스위치문의 괄호가 있는것과 없는것의 차이를 알았는데 까먹었다.

=> 'switch문의 범위'와 관련된 부분인데

https://boycoding.tistory.com/186

이곳 좀 내리다 보면 밑에 부분 참고 하도록 하자. => 지역변수와 관련됨.

구현한 부분

일단 좌우 MOVE 및 IDLE상태까지는 구현 됨.

다만 아직 이미지 사이즈등등이 안 맞다.

리소스가 크리티컬한 문제이다.

중력 구현 ❗❗

WS 키의 힘은 안받도록 설정하고,

이제 중력을 구현할 것인데

방법

1) 중력을 Scene에서 관리한다.
-> 중력 Manager를 따로 만들어서 관리를 한다.

2) 중력 자체를 컴포넌트로 구현

둘중 뭘 사용을 해도 상관없는데 니가 알아서 구현해라~

일단 플레이어 한테만 구현을 하도록 하자.

플레이어의 RigidBody 에다가만 AddForce를 통해서 힘을 y축 방향 아래로 준다.

그런데 내가 땅에 있을 경우 이제는 0으로 계산을 해야한다.

그게 아니라 힘을 계속 주면은 아래로 내려갈 것이다.

즉, 땅에 있을 때 계산 안한다.

그리고 떨어질 때도 게임적 허용을 위해 속도 제한도 걸어 주어야한다.

점프 구현 ❗❗

점프를 하는 그 순간부터 중력이 바로 적용되는 것이다.

캐릭터들은 게임에서 폴짝폴짝 뛰는데,

점프를 뛰는 순간에 힘을 바로 주면은 게임적인 느낌을 구현하면 느낌이 안 산다.

그래서 점프하자마자 폴짝 뛰게 하려면은

MOVE구현할 때 처럼 즉시 속도를 바로 주면은 된다.

점프는 보통 힘을 주어서 점프를 하게 하는게 아니다.

그냥 내가 점프하는 방향으로 바로 속도를 줘 버리는 것이다.

그러면 나에게 속도가 바로 주어졌으니까 즉시 바로 이동하게 되는 것이다.

점프를 하는 순간 중력이 적용될 것이다.

그런데 중력은 '힘'이니까

G = M * A 이다.

'가속도'를 나에게 제공한다.

중력 특징

일반적인 힘이라면은 질량이 클 수록 A(가속도)는 줄어든다.

F = M * A 라서.

그런데 지구 중력에 무게가 무겁거나 가볍다해서 중력에 의한 가속도를 다르게 받나? => 같게 받는다.

그래서 구현 ❗❗

무게, 질량에 상관없이

그냥 바로 게임에 맞춰서 '고정적인 가속도'를 주면 된다.

그래서 캐릭터가 점프 하는 순간

'중력'이 적용될 것인데 이게 '힘'이 적용된다기 보다는

아래 방향으로 일정한 '가속도'가 적용되도록 하는게 현실에 가깝다.

그래서 점프를 하는 순간 속도가 1시방향을 향하지만

고정된 속도(중력)가 아래로 적용 받아서 내가 최초로 점프한 속도의 방향이 점점점 아래로 내려간다.

이런식으로..

이단 점프 구현 ❗❗❗

점프 하는 도중에 점프키 누르면 다시 팔딱 뛰어 오르는데

이거를 '힘'으로 구현을 하면은

이미 내가 떨어지는 가속도가 중력에 의해 발생했기 때문에

중력 가속도가 누적이 되어서 떨어지는 속도를 보유를 하고 있기 때문에

이때 내가 아무리 강한 힘을 주어도 '힘'은 결국 내가 향한 '힘'의 가속도가 생기는 거라

떨어지는 속도가 내가 가한 '힘'의 가속도에 의해 상쇄 되어서

속도가 잠깐 '주춤' 거리는 정도 밖에 안된다.

그래서 이단 점프 구현할 때

나한테 누적된 가속도에 상관 없이

바로 또 특정 속도로 셋팅 해주어야한다.

그래야 해당 방향으로 날아갈 것이다 (점프)

모든 게임이 다 그런것은 아니다.

카스에서 버니합 같은게

공중에서 몸을 틀어서 순간적인 움직임에 의한 힘을 만들어내서 하는게 버니합이다.

이런 허점들을 활용을 한 것이다.

profile
공부 일기장으로 변해버린 블로그 (https://cjbworld.tistory.com/ <- 이사중)

0개의 댓글