이전 내용을 모른다면, 아래 내용을 보고 오면 좋다. 이어지는 내용이다.
Unreal Engine 5 or 4, Obejct Rotation (회전 시키기) (tistory.com)
위 포스팅에서 기본적인 구조를 만들었다.
이제 사용자의 니즈를 파악해서, 니즈에 맞는 옵션값을 설정 할 수 있게 수정하는 일들이 남았다.
요청자의 니즈(혹은 기획서)를 확인해본다. 그런게 없다면 본인 머리속에서 구상하거나, 아래의 예시들을 참고해보면 좋다. 사용자들은 저런 요청을 많이 한다.
<요청자의 니즈>
1. 오브젝트 주변에 캐릭터가 오면, 회전해야 합니다.
2. 회전 각도를 설정할 수 있었으면 좋겠습니다.
3. z축과 y축 회전으로 해줬으면 좋겠습니다.
4. 프로토타입을 써보니 정면이 어딘지 잘 모르겠습니다.
<구현 니즈>
1. 주변에 "캐릭터"가 왔을 때 회전 할 수 있게 설정해야 한다.
2. 회전 각도 변수를 config 화 시킨다.
3. z/y 축 설정 할 수 있게 enum을 생성한다.
4. 정면에 대한 표현을 해준다.
하나씩 들어가보자.
(해당 부분은 심화 부분으로 디테일한 설명은 빠져있다)
1. 주변에 "캐릭터"가 왔을 때 회전 할 수 있게 설정해야 한다.
- 액터가 회전을 할 수 있는 "조건" 이 나왔다. 만들어둔 액터는 "조건" 이 없는 액터였으므로, 이 기회에 조건을 만든다.
A) 액터 주변에 박스 콜리전을 설치하고, 이벤트 그래프에서 해당 액터는 특정 "캐릭터" 만 체크하도록 바꾼다.
- 프로젝트 상황에 따라서, 플레이어블 캐릭터가 Character 가 아닐수도 있으니 참고.
- 회전이 끝나기전에 다시 체크하면 회전이 중첩되어 버벅거릴 수 있으므로, Gate 로 "행동이 완전이 끝날때" 까지 작동하지 않게 설정해야 한다.
대충 정리하자면
1. 오버랩 되면, 최초로 들어온 신호에 한해서는 Start Closed == false 이므로 게이트 열지 않아도 바로 작동
2. Gate 를 지나자마자 오버랩 게이트 닫기 이벤트를 통해 해당 Gate 를 닫는다.
3. 해당 게이트는 돌리는 모든 행위가 끝난 "타임라인" Finished 노드에 연결하여 다시 열어준다.
2. 회전 각도 변수를 config 화 시킨다.
- 2번항목과 3번 항목은 동일한 작업이기때문에 한꺼번에 다루겠다.
3. z/y 축 설정 할 수 있게 enum을 생성한다.
- 사용자가 인터페이스에서 돌릴 수 있는 축을 설정 할 수 있게 수정한다.
콘텐츠 브라우저에서 열거형 블루프린트를 생성한다.
만들어둔 액터로 가서 변수를 생성하고, 유형을 만든 Enum 값으로 바꾼다.
다시, 만든 열거형 블루프린트를 열고, 아래와 같이 추가한다.
로테이션 액터로 돌아와서, 아래와 같이 설정한다.
잘된다.
4. 정면이 어딘지 알려달라.
회전 액터에 Arrow 를 추가한다.
끝이다. 만들어주니 좋아한다.
요걸 베이스로 기믹 몇개를 더 만들어서 프로젝트에 실 운용중에 있다. (외형이나 기믹적 장치가 더 들어가있긴하다)
포스팅을 본 여러분들은 응용해서 잘 사용하면 좋을 것 같다.