이 게시글은 움짤이 있습니다. 데이터가 많이 나갈 수도 있습니다.
Physics Handle 컴포넌트
이 컴포넌트를 이용하면 오브젝트를 Grab하고 있을 수 있다.
자세한 내용은 언리얼 문서로 ㄱㄱ.
https://docs.unrealengine.com/en-US/BlueprintAPI/Physics/Components/PhysicsHandle/index.html
Physics Handle 컴포넌트 사용해보기
우선 1인칭 템플릿으로 프로젝트를 생성하고, 캐릭터 블루프린트 창을 연다.
Physics Handle 컴포넌트를 추가한다.
앞의 오브젝트를 잡아야하니까 일단 앞에 존재하는 오브젝트를 얻어와야한다.
밑의 예제는 G키를 누르면, 카메라 방향으로 700만큼 Line을 그리는 블루프린트이다.
오브젝트를 찾았으면, Physics Handle 컴포넌트의 Grab Component at Location을 이용해 Grab하자.
계속 그랩하고 있으려면, Tick 이벤트마다 위치를 계속 바꿔주어야 한다.
위치 값을 가지는 더미 오브젝트를 생성하고, 위치를 잡아주자.
Physics Handle 컴포넌트의 SetTargetLocation을 이용해 위치를 갱신해주자.
G키를 눌러 그랩을 했는데, 놓는 것을 안 만들었다.
G키를 떼면, 놓아지도록 만들자.
오브젝트를 Grab할 때 Grab Component at Location를 사용했는데,
Grab Component at Location with Rotation을 사용하면, Grab동안 물체의 회전을 막을 수도 있다.
얌전하게 Grab된다.
특정 오브젝트만 그랩하고 싶으면, 형변환을 하면 된다.
Physics Handle 컴포넌트 자연스럽게 만들기
오브젝트를 Grab하는 것을 만들어보았는데, 좀만 더 자연스럽게 만들어보자.
1. 물체를 그랩해서 뒤 돌았을 때 물체가 좀 더 가까이 느껴지는 어색하다.
기존에는 Grab할 때의 Location을 Hit Result의 Impact Point로 연결했다.
오브젝트 Pivot 위치를 기준으로 만들어서 자연스럽게 만들자.
2. 회전 값이 뭔가 어색하다.
Grab 한 그대로 있어야 원하는 곳에 놓을 때도 편할 것이다.
(회전 하는 법 정리하기)
3. 카메라와 그랩된 오브젝트 사이에 장애물이 있으면, 제대로 안 움직여 어색하다.
장애물이 있으면 포지션을 옮겨서 자연스럽게 만들어보자.
(Line Trace 이용해서 하고, Lerp 이용해서 0.7정도로 해보자. 나중에 정리하겠음)
'Unreal' 카테고리의 다른 글
[Unreal BP] 입사각에 대한 반사각 구하기 (0) | 2021.01.27 |
---|---|
[Material] World Position 노드 알아보기 (1) | 2021.01.22 |
[Material] Screen Position 노드 알아보기 (0) | 2021.01.21 |
[Unreal BP] 타임라인 노드로 간단한 애니메이션 만들기 (0) | 2021.01.20 |
[Unreal BP] Material 파라미터 값 변경하기 (0) | 2021.01.20 |