WinAPI 64 RigidBody (1)

CJB_ny·2022년 10월 9일
0

WinAPI

목록 보기
67/79
post-thumbnail

오늘 배운거 👍👍👍

  • 유도탄 구현

    벡터, 회전 힘 등으로 구현하는 방식 (추진이 달린 로켓)

    힘으로 구현하는 방식

  • 속도의 개념

  • 마찰 생각해야 하는 부분


유도탄 만들껀데 방향을 회전하는 속도도있어야 할 것이고 방향도 있어야한다.

그런데 이런 방향 말고 '힘' 개념으로 적용시키는 미사일도 있다.

물체에 힘을 가하면 물체의 힘은 : 물체의 질량 X 가속도 이다.

가속도

시간당 속도의 증가량

매 초마다, 매 순간순간 마다 더해지는 속도의 양이다.

가속도에 의해 누적해서 쌓인게 곧 나의 속도이다.

속도는 시간당 이동거리이다.

어떤 물체에 지속적으로 힘을 가하고 있다면은 물체의 속도는 점점 증가할 것이다.

타겟을 향해서 진행을 하다가 타겟이 밑으로 움직였을 때 탄환에도 같이 밑으로 힘을 주면은

한방에 밑으로 방향전환이 가능할까? ㄴㄴ. 이미 쌓여있는 힘이 있어서 안된다.

조금 틀어지는 정도이다.

힘에는 방향 개념이 있고, 가속도에도 방향 개념이 있기 때문에

방향이 틀어진다.

Vector ❗❗

힘이랑 방향을 동시에 표현이 가능하다.

RgidBody에서 사용할 Vector는 좌표성 정보가 아니라

RigidBody기준으로의 '방향성' 정보로써 활용을 할 것이다.

4, 3으로 가는 벡터를 정규화를 하면 '방향'이 나오고

'길이'값을 구하면 해당 벡터의 '크기'가 나온다.

RigidBody 멤버 변수

내가 준 힘 == _force는 질량 X 가속도 로 된다.

_force / _mass == 힘을 질량으로 나누면은 내가 힘을 준 방향으로의 '가속도'가 나온다.

질량이 큰 물체일 수록 동일한 힘이더라도 가속도가 훨씬 크게 나올 수도 있고 작게 나올 수도 있다.

이것들을 통해서 '속도'를 구할 것이다.

우리가 이때까지 썻던 _speed는 정확히 말자하면 '속력'이다.

속력은 방향을 계산하지 않은 순수한 속도값 그자체이다.

'속도'는 그 크기(속력)과 방향을 같이 생각하는 개념이다.

Vector2 에서 표현하는 길이 가 '크기'인데 이것이 곧 '속력'이고

방향성 정보는 해당 벡터를 정규화 했을 때 나오는 '방향'이다.

이런식으로 해서 힘에 의해 물체가 움직여 지는 상황을 구현해 볼 것이다.

Player 수정

이런식의 좌표를 가지고 와서 수정을 안하고 RigidBody를 통해 힘에 의해 움직이게 할 것이다.

이런식으로 힘을 준다음에

RD는 매번 finalUpdate를 돈 다음에 항상 누적된 힘을 0으로 둘 것이다.

힘을 주는 방향과 크기가 서로 각기 다 다를 것인데

어쨋든지 간에 힘을 크게 주는 쪽으로 계산을 끝낸다음 힘의 크기가 가장 큰 방향으로

방향 벡터가 정해져서 가속도가 붙게 될 것이다.

이런식으로 해주고 나면은 나중에 finalUpdate 부분에서

힘 : 방향 + 크기 정보가 다 들어 있을 것이다.

이런식으로 순수 힘의 크기, 방향을 구할 수 있다.

가속도는 나의 힘의 크기에서 질량을 나누면은 => 가속도가 나온다.

KEY_HOLD일 경우 그방향으로 힘을 200을 꾸준히 주고있는 상황이다.

Normalize ❗❗

현재 정규화 함수를 사용하면 원본이 변경되기 때문에

지역변수를 하나 받아오도록 하자.

이런식으로 여기서 이동처리를 해준다.

속도의 의미 ❗

지금은 이렇게 속력이랑 방향을 따로 구했는데 사실은

'속도'안에 크기와 방향정보가 다 들어가 있기 때문에 의미가 없다.

그래서 final에서도

처음부터 force를 질량으로 나누었으면 되었다.

이거랑 같은 의미이다. 방향은 위에서 정규화를 해주었으니까 굳이 지역변수 float force를 사용 안해도 되었다.

finalUpdate 코드 수정

지금 정규화 할 때 speed != 0 일경우 정규화 해주도록 조건문 걸어주고

현재 이런식으로

속도는 가속도 * DeltaTime_F를 해주어야 매 프레임 가속도가 붙는다.

지금

우리가 마찰 계수를 생각을 해주어햔다.

점프나 마찰 구현 ❗

게임 적인 어느정도의 허용이 필요하다.

중력이랑 점프를 구현하게 될 경우 실제와 조금 다르게 적용되어야할 부분들이 있다.

점프를 할 경우 어느정도 고정 속력을 셋팅을 주고 점프 힘을 주어야된다.

얼음 위에 있을 경우 마찰력을 적게 주면 더 많이 미끄러진다.

즉, 플레이가 있는 타일의 성질에 따라 플레이어 자신의 마찰력값을 계속 셋팅해 나가는 방식이라면은

공중인지 두발 몬스터인지에따라서 각기 다르게 셋팅이 가능하다.

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

0개의 댓글