본문 바로가기

반응형

Programming/Godot

(31)
Godot사용팁 - path2D Path2D노드 사용법에 대해 알아보겠습니다. Path2D노드를 사용하면 단순히 움직이는 캐릭터들(Enemy 나 NPC 등)의 단순 이동동작을 최소한의 코딩으로 구현할 수 있는 유용한 노드입니다. 1. 적당한 Enemy 노드가 있을 경우, 전체 동작하는 Scene에서 아래와 같이 구성을 하였습니다. Path2D노드는 하위에 항상 PathFollow2D를 자식으로 담고 있어야 합니다. Path2D노드가 포인트를 이용하여 라인을 생성하는 노드라면, PathFollow2D노드는 그 선을 어떤 방식으로 따라가는지를 설정하는 노드입니다. 2. Path2D노드를 다시 선택하면 아래 그림과 같이 에디터 상단에 포인터 추가/삭제/편집할 수 있는 버튼이 활성화됩니다. 적당히 이동 경로를 그려줍니다. 이 중 5번째 아이콘..
Godot사용팁-AnimationTree노드의 Blendmode2D로 애니메이션 컨트롤 오늘은 AnimationTree노드에 대해 알아보겠습니다. 처음 캐릭터의 애니메이션을 만들면 AnimationPlayer노드를 많이 사용하는데요, 이 노드만 이용해서 각종 상태를 코드로 컨트롤하려면 좀 힘듭니다. 많이 힘듭니다. 머리는 쥐가나고, 코드는 스파게티가 되고, 뭐 하나라도 추가하려면 완전... 그래서 여기서도 똑똑하신분이 상태 관리하라고 노드를 하나 주셨는데, 그게 바로 AnimationTree노드입니다. AnimationTree노드를 사용하려면 각각의 동작 Animation은 사전에 구현이 되어있어야합니다. 이미 존재하는 Animation을 컨트롤하는 상태관리자라고 보시면 됩니다. 참고로 저는 코로나 격리기간 중에 아래와 같은 게임을 7살 딸과 함께 만드는 중이었습니다. 탑다운 방식이다보니 ..
Godot GUI프로그래밍 예제 - 시계만들기 1. Display Size를 (400,500)으로 세팅합니다. 2. Borderless를 설정합니다. 3. Per Pixel Transparency를 Allowed, Enabled 로 바꿉니다. 4. 노드 구성 - clock (control) ㄴ ColorRect (ColorRect) ㄴ Body (sprite) : 시계 몸체 이미지 ㄴ pivot_h (Node2D) ㄴ Hour (sprite) : 시침 이미지 ㄴ pivot_m (Node2D) ㄴ Minute (sprite) : 분침 이미지 ㄴ pivot_s (Node2D) ㄴ Second (sprite) : 초침 이미지 5. Body는 앱 중앙에 위치시키고, pivot들은 Body의 중앙에, pivot 내부의 sprite이미지들은 위와같이 정렬해줍니..
Godot GUI 프로그래밍 - 컨테이너 GUI에서 레이아웃을 구성할 때 앵커를 이용해서 다양한 종횡비를 처리할 수도 있습니다만, 좀더 효과적으로 내부 요소들을 배치하기 위해서는 컨테이너가 필요합니다. 컨테이너 노드를 사용하면 모든 자식 노드는 자신의 지정된 위치가 무시됩니다. 즉, 컨테이너가 위치를 제어하게 되고, 컨테이너의 크기가 조정되면 모든 자식 노드가 그에 따라 재배치되며 사용된 컨테이너 유형에 따라 동작합니다. HBoxContainer 가 자식 버튼 의 크기를 조정 하는 예입니다. Size Flag 컨테이너에 노드를 추가할 때 컨테이너가 각 자식을 처리하는 방식은 주로 Size Flag에 따라 다릅니다 . Size Flag는 컨테이너의 자식노드(컨트롤 노드)의 inspector에서 찾을 수 있습니다. 크기 플래그는 수직 및 수평 크기..
Godot 엔진 시작하기 - Signal Signal 소개 Signal은 옵저버 패턴의 Godot버전입니다. 특정 이벤트가 발생하면 노드는 신호를 보낼 수도 있고, 다른 노드는 그 신호에 응답할 수도 있습니다. 예로, 버튼이 눌려 있는지 매 프레임마다 확인하는 대신 버튼이 눌렸을 때 Signal을 보낼 수 있습니다. 타이머 예 Timer 노드를 이용한 예제를 살펴보겠습니다. Node2D와 두 개의 자식(Timer 및 Sprite )이 있는 새 씬을 만듭니다 . 씬독에서 Node2D의 이름은 TimerExample로 바겠습니다. Sprite의 텍스처에는 LoadSprite의 Texture 속성 드롭다운 메뉴에서 Godot 아이콘이나 원하는 다른 이미지를 할당합니다. 루트 노드에 스크립트를 첨부하되 아직 코드를 추가하지 마십시오. 씬 트리는 아래와..
Godot 엔진 시작하기 - 스크립팅 2 스크립팅(계속) Processing 대부분의 스크립트는 매 프레임에서 처리되어야 합니다. 처리에는 idle(유휴상태) 처리와 physics(물리) 처리의 두 가지 유형이 있습니다. Idle 처리는 Node._process() 메서드가 스크립트에서 발견되면 활성화됩니다. Node.set_process() 함수로 켜고 끌 수 있습니다. 이 메서드는 프레임이 그려질 때마다 호출됩니다. func _process(delta): # Do something... pass _process() 함수가 호출 빈도는 실행 중인 애플리케이션의 FPS(초당 프레임 수)에 따라 다릅니다. 이 비율은 실행 시점마다, 또는 장치에 따라 다를 수 있습니다. delta매개변수에는 _process()를 호출한 이전 시점부터 경과된 시간(..
Godot 엔진 시작하기 - 스크립팅 스크립팅 언어 사용 가능한 스크립팅 언어 Godot는 GDNative 기술을 통해 GDScript, C#, VisualScript, C++ 의 4가지 게임플레이 프로그래밍 언어를 공식적으로 제공합니다 . 커뮤니티에서 지원하는 언어로 Python, Lua, Rust 등도 있습니다. 단일 프로젝트에서 여러 언어를 사용할 수 있습니다. 예를 들어 팀에서 GDScript로 게임 플레이 로직을 코딩할 수 있습니다. 작성 속도가 빠르기 때문에 레벨 디자이너가 그래픽 언어 VisualScript로 퀘스트를 스크립팅하도록 하고, C# 또는 C++를 사용하여 복잡한 알고리즘을 구현하고 성능을 극대화할 수 있습니다. 또는 GDScript 또는 C#으로 모든 것을 작성할 수 있습니다. 어떤 언어를 사용해야 하는가? GDSc..
Godot 엔진 시작하기 - 인스턴스 생성 요약 인스턴싱은 편리함이 많습니다. 장면을 세분화하고 관리하기 쉽게 만드는 기능. 여러 노드 인스턴스를 한 번에 관리하고 편집하는 기능. 복잡한 게임 흐름 또는 UI를 나누어 구성하고 포함하는 기능. (Godot에서 UI 요소도 노드(장면)임). 소개 Scene & Node 에서 씬은 하나의 루트 노드에서 시작되는 트리 구조의 노드 모음임을 배웠습니다. 원하는 만큼 장면을 만들어 디스크에 저장할 수 있습니다. 이러한 방식으로 저장된 장면을 "Packed Scene"이라고 하며 .tscn 확장자의 파일로 저장됩니다. 씬이 저장되면 다른 씬에서 노드처럼 인스턴싱 할 수 있습니다. 위 그림에서 Scene B는 Scene A에 인스턴스로 추가되었습니다. 인스턴싱 예시 샘플 프로젝트: instancing.zip...

반응형