Unity - Bezier Curve에 대해서 학습해보자.
·
엔진, 프레임워크/Unity
Bezier Curve의 원리 유니티뿐만 아니라, 컴퓨터 그래픽에서 부드러운 곡선의 구현을 위해서 많이 사용된다. 그래서 해당 내용을 Unity 카테고리에 적을까 Math 카테고리에서 작성할까 고민을 하다가 Unity에서 구현하는 방법을 가지고 Bezier Curve를 소개할 예정이라 Unity 카테고리에 작성을 한다. 베지어 커브(Bezier Curve)는 선분에서 얻는 점을 가지고 구현을 할 수 있다. 1차 베지어 커브부터 N차 베지어 커브까지의 값을 구할 수 있는데, 해당하는 수식들은 아래와 같다. 1차 베지어 커브 B(t)= (1−t)P0​+tP1​ 2차 베지어 커브 B(t)= (1−t)[(1−t)P0​+tP1​]+t[(1−t)P1​+tP2​]=(1−t)2P0​+2(1−t)tP1​+t2P2​ 3차..
Unity - AnimationCurve를 사용해보자.
·
엔진, 프레임워크/Unity
유니티에서 연출 작업을 위해서 선형적이지 않은 움직임이 필요할 때가 있다. 이럴 때에 나는 AnimationCurve를 자주 사용하는 편이다. 선형적과 비선형적인 움직임의 차이라면 흔히 들어봤을 법한 Easing이 있다. 관련된 내용은 아래의 GIF를 같이 보자. Easing은 게임개발 이외에 다양한 분야에서 사용된다. 우리가 핸드폰을 켰을 때, 바로 나타나는 것이 아니라 서서히 빠르게 밝아진다거나, 웹사이트에서 버튼을 눌렀을 때, 따닥! 하고 움직이는 애니메이션들이 Easing을 활용한 연출이다. 여러 공식들이 존재하지만, 유니티에서 간단하게 Easing을 구현할 수 있는 방법은 AnimationCurve를 사용하는 것이다. (Easing 공식 관련 사이트 : https://easings.net/) 유..
Unity Lifecycle
·
엔진, 프레임워크/Unity
유니티에서는 지정된 순서에 맞춰서 여러 개의 이벤트 함수들이 실행된다. 해당 이벤트 함수들을 상황에 알맞게 사용하여 실행 흐름에 맞는 프로그래밍을 진행할 수 있다. 간혹가다가 순서가 꼬일 경우, 시스템의 기능이 정상적으로 작동하지 않을 수 있기 때문에 유의해야 한다. 첫 번째 씬 로드 Scene이 시작하고 호출이 진행된다. 이벤트 함수 중에 가장 초기에 있기 때문에 초기화나 값 설정을 필요로 할 때, 많이 사용된다. 1. Awake - Start 함수 전에 실행이 되며, 프리팹 인스턴스 화 이후 호출된다. - 오브젝트가 비활성화인 상태에서는 실행되지 않는다. 2. OnEnable - 오브젝트가 비활성화인 상태에서 실행되지 않는다. - 오브젝트 활성화 시 실행되며, 무언가 수정이 이루어졌을 때 실행된다. ..
[UI Toolkit] 2. UI Builder가 아닌 UXML로 만들기
·
엔진, 프레임워크/Unity
참고 사이트 https://docs.unity3d.com/Manual/UIE-HowTo-CreateRuntimeUI.html 이번에는 UI Builder를 통하지 않고 UXML 파일에서 코딩을 통해서 이전에 만들었던 레이아웃 대로 만드는 법을 알아보자. 이전에 1편에서 UI Toolkit의 구조는 웹 프로그래밍에서 영감을 받았다는 말을 전했었는데, 실제로 HTML과 CSS와 같은(UXML과 USS) 구조를 따른 다는 것을 알 수 있었다. 다만, UI Builder를 사용했기 때문에 UXML의 코드를 보진 못했을 텐데, IDE에서 UXML을 열어보자. UI Builder를 통해서 레이아웃을 배치한 것들이 위와 비슷하게 보일 것이다. (이번에는 Visual Studio를 사용하고 있어서 모든 코드가 동일한 ..
[UI Toolkit] 1. UI Builder를 사용한 UI 배치
·
엔진, 프레임워크/Unity
참고 사이트 https://docs.unity3d.com/Manual/UIB-getting-started.html UI Toolkit은 Unity에서 사용되었던 IMGUI -> UGUI의 계보를 잇는 새로운 UI 시스템이다. 이전부터 존재는 알고 있었지만, 당시에는 자잘한 이슈들이 많아서 새롭게 배울 필요에 대해서 많이 느끼지 못했었다. 최근에 CustomEditor를 만들어야 할 일이 있었는데 디자인을 보다 자유롭게 만들 수 있는 UI Toolkit을 고려했으나, 기능 구현이 우선이므로, EditorGUILayout을 통해서 개발을 하고, UI Toolkit으로 변환하는 작업을 진행하고자 학습을 시작한다. 이번 학습 내용은 UI Builder를 사용하여 UI 배치를 진행하고 빌드하여 실행했을 때, 상호..