본문 바로가기

카테고리 없음

Unreal Engine 5 or 4, Obejct Rotation (회전 시키기/사용자인터페이스화)

이전 내용을 모른다면, 아래 내용을 보고 오면 좋다. 이어지는 내용이다. 

Unreal Engine 5 or 4, Obejct Rotation (회전 시키기) (tistory.com) 

 

Unreal Engine 5 or 4, Obejct Rotation (회전 시키기)

오늘은 언리얼엔진5 or 4 에서 오브젝트를 회전시키는 방법에 대해서 알아보고자한다. (이거 할려고 상당히 애먹었다) 1. 한번에 N' 각도만큼 움직일 수 있는 오브젝트를 만든다. 2. 해당 오브젝트

level-planner-maehwa.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번 항목은 동일한 작업이기때문에 한꺼번에 다루겠다. 

 

회전각도라고 변수를 지어준다.
퍼블릭선언(눈마크)
변수 세팅 값에 카테고리에 이름을 설정해주면 사용자들이 좀 더 편하게 카테고리를 확인 할 수 있다.
인스턴스 액터에서 회전각도 변수가 나와있는걸 볼 수 있다. 회전 각도를 90' 로 바꿔봤다.
한번에 90' 씩 도는걸 볼 수 있다.

3. z/y 축 설정 할 수 있게 enum을 생성한다.

   - 사용자가 인터페이스에서 돌릴 수 있는 축을 설정 할 수 있게 수정한다. 

 콘텐츠 브라우저에서 열거형 블루프린트를 생성한다.

 만들어둔 액터로 가서 변수를 생성하고, 유형을 만든 Enum 값으로 바꾼다.

퍼블릭화 선언도 같이..(눈깔)

다시, 만든 열거형 블루프린트를 열고, 아래와 같이 추가한다. 

로테이션 액터로 돌아와서, 아래와 같이 설정한다. 

연결 수정 및 X/Y/Z 값 변수화
회전축 선택 열거형에서, "스위치" 를 가져와서 열거형 값에 따른 작동 분기점을 생성, Z일때는 원래 쓰던 노드 연결, Y일때만 Z를 가져온 변수로 사용하고 Y를 회전각도로 수정
Y일때만 테스트 함

잘된다. 

 

4. 정면이 어딘지 알려달라.

회전 액터에 Arrow 를 추가한다. 

(씬 컴포넌트에 붙인다. 끌어서 놓으면 붙는다)
정면이 어딘지 표현된다.
arrow 는 에디터 환경에서만 표현되고, pie 에서는 표현되지 않는다.


끝이다. 만들어주니 좋아한다. 

요걸 베이스로 기믹 몇개를 더 만들어서 프로젝트에 실 운용중에 있다. (외형이나 기믹적 장치가 더 들어가있긴하다)

 

포스팅을 본 여러분들은 응용해서 잘 사용하면 좋을 것 같다.