본문 바로가기
회사 TIL

[TIL] 22.12.15 /World, Local 좌표 이해하기😥, Strong Box 1단계 도전

by imagineer_jinny 2022. 12. 16.

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

댓글