본문 바로가기
회사 TIL

[TIL] 22.12.19

by imagineer_jinny 2022. 12. 20.

TIL (Today I Learned)

 

오늘 해야할 것

  • 금고 1단계 마무리하기
    • 키 라커 상태에 따라 움직일 수 있는 범위 조절
    • 금고에서 왼쪽에서 두번째, 세 번째 튀어나온 부분에서는 Rotate 안되게 막기
  • Stage3 RightDoor 구현하기

 

오늘 한 것

  • 키 라커 상태에 따라 움직일 수 있는 범위 조절하기
  • 금고에서 왼쪽에서 두, 세번째 튀어나온 부분에서는 Rotate 안되게 막기 -> 실패

Rotate 금지 영역을 만들고 금지 영역에 다다르면 Rotate가 안되게 한다.

정확히 안되는 상황을 정의하면

키 라커 상태가 앞을 바라보고 있을 때 금지 영역에 다다르면 Rotate가 안된다

= 범위로 지정한 70-105도 사이에서 roll이 멈춰있는다.

 

1. 금지 영역은 어떻게 만들어주지?

이동 범위 제한한 것 처럼 좌표를 받아오면 되지 않을까?

로컬로 받을까 월드로 받을까?

 

- 왼쪽에서 두 번째 : _meshKeyLocker 중심 축 위치에서 13.f<= x <=14.f

 

- 왼쪽에서 세 번째:  _meshKeyLocker 중심 축 위치에서 19.f<= x <=20.f

 

2. 금지 영역에 간건 어떻게 판별하지?

if (location.X == 13.f)

 

3. Rotate가 안되게 한다.

_meshKeyLocker->GetRelativeRotation().Roll 을 

70 <= roll && roll <= 105


  • Stage3 RightDoor 설계 / 필요한 부분 코드 분석

오른쪽 문 손잡이를 잡고 앞으로 당기면 오른쪽 문의 중심 축의 up vector를 기준으로 -방향으로 회전한다 (Yaw)

 

1. 문에 잡는 부분이 있어야하고 손 위치랑 같이 잘 잡히나 봐야함

- 초록 원은 뜨는데 손은 사라짐

 

2. 회전 구현

- 손잡이를 잡는다

 

- 손잡이를 잡고 앞으로 당긴다

  • 손 위치가 바뀐다
  • 손 위치가 바뀌니까 각이 생긴다

 

- 오른쪽 문이 - 방향으로 축을 중심으로 회전한다

  • 축은 오른쪽문의 UpVector
  • 각과 축을 이용해서 회전시켜준다.

1. 문에 잡는 부분이 있어야하고 손 위치랑 같이 잘 잡히나 봐야함

- 초록 원은 뜨는데 손은 사라짐

-> GrabComponent를 Mesh에 파묻히게 해놔서 안보였음. 좀 꺼내주니까 보임.

 

2. 회전 구현

- 손잡이를 잡는다

  • 손 위치를 변수로 가져온다.
  • FVector handPos = _handSocketRef->GetComponentLocation();

 

- 손잡이를 잡고 앞으로 당긴다

  • 손 위치가 바뀐다
    • v1= _lastHandSocketPos
    • v2 =_handPos
  • 손 위치가 바뀌니까 각이 생긴다
    • 각을 구해주기전에 Projection 해줘야함
    • 오른쪽 문의 RightVector로 해줌
    • v1,v2 = UKismetMathLibrary::ProjectVectorOnToPlane(v1, right);
    • 각 만들어준다 -> double angle;

 

- 오른쪽 문이 - 방향으로 축을 중심으로 회전한다

  • 축은 오른쪽문의 UpVector
  • 각과 축을 이용해서 회전시켜준다.
  • 외적 : projection한 v1, v2로 나온 결과 v
  • v랑 UpVector랑 Yaw 회전 시켜줌

 


 

 

 

 

오늘 배운 것

  • FRotator (

        float InPitch,
        float InYaw,
        float InRoll
    )

  • RightDoor 여는거 구현하는 도중 회전 줄 때 AddRelativeRotation으로 하니까 확 열리길래 SetRelativeRotation으로 하니까 괜찮게 열림
  • KeyLocker 회전같이 잡을때마다 빠르게 움직이는 것들을 AddRelative 쓰고 레버처럼 당기는 만큼 구현하려면 SetRelative 쓴다고 느낌으로만 이해함

 

 

내일 진행할 것

  • Stage 2 완성

 

 

앞으로 진행할 것

  • 오큘러스 내 빌드 해결
  • SCP 914 찾아보기

https://www.youtube.com/watch?v=-9rbYP0cDjU
https://www.youtube.com/watch?v=V2Ps5bM4TwE

 

댓글