Question>
unreal engine 3를 쓰다가 unreal engine 4를 쓰게 됐음.
그런데,
'RootComponent'라는 변수가 자주 보이고,
게다가, 이와 관련된 함수가 상당히 많이 존재함. @_@;;;;;
unreal engine 3에서는
actor에 component를 그냥 붙이기만 해도 아무 문제 없었음.
즉, root component라는 개념이 없어도 아무 문제 없이 잘 만들었는데..-_-;;;;
솔직히, 혼란이 오는 상황임.
root component가 무엇이고, 도입된 이유는 무엇인가?
-------------------------------------------------------------
Answer>
우선, unreal engine 3와 unreal engine 4의 actor의 차이점을
알아 두실 필요가 있습니다.
unreal engine 3의 actor:
1>위치, 방향에 대한 변수를 actor가 가지고 있음.
(예> location, rotation)
2>따라서, 위에 대한 정보를 알려 줄 존재의 필요성이 성립 안됨.
3>component라는 개념이 있지만,
'components'라는 array로 관리되며, actor가 워낙 막강해서..^^;;;;
'중심'이 되는 component라는 개념이 불필요함.
4>대부분의 component는 위치와 방향을 변수로 가지지 않음.
(어차피, actor가 가지니까, 특별한 상황이 아니면, 가질 필요가 없음~ ^^)
unreal engine 4의 actor:
1>위치, 방향에 대한 변수가 actor에 없음!!!!!!! ^^;;;;;
2>따라서, 위에 대한 정보를 알려 줄 존재의 필요성이 성립됨!!!!
그리고, 그 정보를 component가 알려줌.
(예> capsule component, movement component, skeletal component, camera component, ...)
3>역시, component라는 개념이 있음.
하지만, array로 관리되지 않고, tree로 관리됨.
tree로 관리되기 때문에, '중심'이 되는 component라는 개념이 필요함!!!!!
4>대부분의 component가 class USceneComponent를 계승하기 때문에 위치와 방향을 변수로 가짐.
(actor에 위치나 방향이 없어서,
필요 정보를 각자 챙겨서 관리해야 일을 할 수 있음.^^;;;;;)
위와 같은 차이점 때문에
unreal engine 3(or UDK)에는 root component라는 개념이 아예 없었고,
필요하지도 않았습니다.
하지만,
unreal engine 4에서 위치, 방향을 알기 위해서는
정보를 알려 줄 존재가 필요했고,
이를 위해서 component를 사용했는데,
1개의 actor는 여러 개의 component로 구성되기 때문에
'중심이 되는 하나'를 정하지 않으면, 혼란스러울 수 밖에 없습니다.
그런 이유로
'중심이 되는 하나'를 정하기 위해서, root component를 사용하게 된 것입니다.^^
일반적으로는
class ACharacter는 capsule component를 root component로 사용하게 됩니다.
하지만, class ACameraActor의 경우에는 camera component를 root compnent로 사용합니다.
즉, class의 종류와 성격에 따라서,
root component의 종류 또한 다양하게 바뀔 수 있다는 점을 조심하셔야 합니다.
P.S.
'root component는 무조건 capsule component이다'라고
생각하셨다가는 피 봅니다.^^;;;;;;
Tag:
안기훈, Kee Hoon Ahn, Unreal, UDK, iPhone, iPad, app, 앱, iOS