TIL (Today I Learned)
오늘 해야할 것
- Wheel, Lever 이해 + 설명
- Strong Box 안보고 설계부터 짜서 기믹 하나 만들기
오늘 한 것
- Wheel, Lever 이해 + 설명
- Lever에 Projection 추가
void AR1LeverBase::RotateLever()
{
if (_handSocketRef == nullptr)
return;
//Projection 추가
_handDir = UKismetMathLibrary::ProjectVectorOnToPlane(_handDir, _right);
}
- Strong Box 1단계 구현 목표
- 열쇠를 잡고 오른쪽이나 왼쪽으로 이동시킬 수 있다.
- 구현
- 1. prev hand pos
- 2. current hand pos - mesh pos
- 3. key locker의 local location
- 4. newpos= key Locker의 location + current pos를 옮긴만큼 더해진 벡터
- -> drawer 방식대로 하니까 key locker만이 아닌 mesh 전체가 움직인다 (SetActorLocation 말고 다른걸 써주자)
- -> key locker만 움직이게 하고 싶다.
FVector handPos = _handSocketRef->GetComponentLocation();//world
FVector handMoveDir = handPos - _lastHandSocketPos; //world
FVector _forward = _meshKeyLocker->GetForwardVector(); //world
_forward.Normalize();
handMoveDir = handMoveDir.ProjectOnTo(_forward);
FVector newPos = _lastHandSocketPos + handMoveDir;//world
FVector location = _meshKeyLocker->GetComponentLocation();
_meshKeyLocker->SetWorldLocation(newPos);
이렇게 world 좌표계 기준으로 하니까 meshKeyLocker가 독자적으로 움직임.
x축 범위만 다녀야하는데 projection 해줘도 독자적으로 움직임
- 쭉 밀리면 안되고 열쇠의 튀어나온 부분이 금고의 튀어나온 부분과 닿으면 더이상 움직이면 안됨
- 왼쪽, 오른쪽 모두 더이상 밀리지 않는 곳들이 있음
- 열쇠는 360도 회전 가능하다.
- 열쇠의 튀어나온 부분이 금고의 튀어나온 부분이 없는 부분인 앞 방향(화면 밖 내가 있는)을 가리킬 때만 열쇠가 끝까지(원하는 포인트 지정) 이동 가능
- 1단계 상태일 때만 열쇠 잡고 돌리는 것이 가능
- 왼쪽, 오른쪽 모두 더이상 밀리지 않는 곳들이 있음
오늘 배운 것
- world 좌표, local 좌표 보는 것
- 이동을 처리할 때 world 좌표들로 계산할거면 world끼리, local로 계산할거면 다 local끼리 계산해줘야 함. 다른 세계에 있는 것들이니까. 적절히 변환할 줄 알아야하는데 이게 어려움.
- world 좌표: 공통적인 좌표계
- local 좌표: 물체마다 갖고 있는 스스로의 좌표계
- 잘 모르겠는 것: 뱉는 함수마다 local을 나타내는지 world를 나타내는지 바로바로 모르겠다.
오늘 느낀 것
- 수학과 설계가 들어가야 하는 구현은 먼저 생각을 하고 컨펌 받고 짜도록 하자...
- 오늘도 비슷한게 있는데 되지 않을까? 하면서 이렇게 저렇게 바꿔봤다. 이것 역시 생각을 하기 싫고 회피하고 싶어서 그랬던 것 같다.
- 설계와 구현은 하루아침에 되는 것도 아니고.. 장기적으로 과제를 진짜 열심히 하고, 일 할 때도 조금 더 집중해서 해보고..
- 오늘도 구현하면서 이게 맞나? 그냥 코드 분석을 할까? 얼마나 걸릴까? 너무 오래 걸리면 어떡하지, 정말 개발이 맞는 걸까 하는 생각이 들었다. 일만 신경 써도 부족한데 아직도 걱정이 많다.
- 일찍 일어날수만 있다면 일찍 일어나서 공부하는게 훨씬 훨씬 집중도 잘되는듯. 생각보다 나는 아침형 인간인가..?
내일 진행할 것
- move 성공 후 rotate 도전
- 설계 더 하기. 제한을 어떻게 줄 것인가?
앞으로 진행할 것
- 오큘러스 내 빌드 해결
- SCP 914 찾아보기
https://www.youtube.com/watch?v=-9rbYP0cDjU
https://www.youtube.com/watch?v=V2Ps5bM4TwE
'회사 TIL' 카테고리의 다른 글
[TIL] 22.12.19 (0) | 2022.12.20 |
---|---|
[TIL] 22.12.16 / 금고 1단계 이동/회전 구현하기 + 제한 주기 (0) | 2022.12.18 |
[TIL] 22.12.14 / Lever, Drawer, Wheel 구현 (0) | 2022.12.14 |
[TIL] 22.12.13 / Drawer, Wheel 코드 분석 (0) | 2022.12.14 |
[TIL] 22.12.12 / 에셋 가져와서 BP, C++ 만들기 (0) | 2022.12.13 |
댓글