gdscript 20

29. [고도 엔진] 플레이어 이동시키기: CharacterBody와 move_and_slide()

이 카테고리는 고도 엔진(Godot Engine) 관련 문법을 기록하고 저장하기 위해 만든 공간입니다. 이번에는 게임에서 가장 먼저 구현하게 되는 기능이자 가장 중요한 뼈대는 바로 '캐릭터 이동'입니다. 슈퍼 마리오처럼 점프를 하거나, 젤다처럼 8방향으로 걸어 다니게 하려면 어떻게 해야 할까요? 고도 엔진(특히 4버전)에서는 CharacterBody(2D/3D) 노드와 move_and_slide()라는 마법의 함수를 사용하여 충돌 처리와 이동을 아주 쉽고 완벽하게 구현할 수 있습니다.1. CharacterBody 노드: 내 맘대로 조종하는 물리 몸체게임 속 물체는 크게 두 가지로 나뉩니다. 공처럼 중력과 충돌에 의해 튕겨 나가는 '순수 물리 객체(RigidBody)'와, 벽에 부딪히면 멈추지만 코드로 직..

28. [고도 엔진] 두 객체 사이의 거리와 방향 구하기 (distance_to, direction_to)

이 카테고리는 고도 엔진(Godot Engine) 관련 문법을 기록하고 저장하기 위해 만든 공간입니다. 이번에는 게임을 만들다 보면 "플레이어와 몬스터 사이의 거리가 얼마나 될까?", "총알이 플레이어가 있는 방향으로 날아가게 하려면 어떻게 해야 할까?" 같은 고민을 아주 자주 하게 됩니다. 지난 시간 벡터의 기초에서 '도착점 - 출발점 = 방향'이라는 공식을 배웠지만, 고도 엔진에서는 이를 훨씬 더 직관적이고 편리하게 해결할 수 있는 내장 함수를 제공합니다. 바로 distance_to()와 direction_to()입니다.1. distance_to(): 너와 나의 거리 (거리 구하기)distance_to() 함수는 두 노드의 위치(주로 global_position) 사이의 실제 직선거리를 계산해 줍니다..

27. [고도 엔진] 2D/3D 공간의 이해: 벡터(Vector2, Vector3) 기초

이 카테고리는 고도 엔진(Godot Engine) 관련 문법을 기록하고 저장하기 위해 만든 공간입니다. 이번에는 학교 수학 시간에 '벡터'라는 단어를 듣고 머리가 아팠던 기억이 있으신가요? 걱정하지 마세요! 게임 개발에서의 벡터는 복잡한 수학 공식이라기보다는, 게임 세상 속에서 노드들이 어디에 있는지(위치), 어디로 가고 있는지(방향), 그리고 얼마나 빨리 가고 있는지(속도)를 나타내는 '화살표'라고 생각하면 아주 쉽습니다.고도 엔진에서 2D 게임을 만들 때는 Vector2, 3D 게임을 만들 때는 Vector3를 사용합니다. 캐릭터를 움직이기 위해 반드시 알아야 하는 벡터의 기초와 핵심 활용법을 정리해 보겠습니다.1. 벡터의 기본: 좌표계와 위치 (x, y, z)벡터는 단순히 숫자들의 묶음입니다. 2D..

26. [고도 엔진] 열거형(enum)을 활용한 캐릭터 상태 기계(State Machine) 만들기

이 카테고리는 고도 엔진(Godot Engine) 관련 문법을 기록하고 저장하기 위해 만든 공간입니다. 이번에는 캐릭터를 조작하는 게임을 만들다 보면 is_running, is_jumping, is_attacking 같은 참/거짓(boolean) 변수가 끝도 없이 늘어나는 경험을 하게 됩니다. "공격 중에는 점프할 수 없다", "죽어있을 때는 움직일 수 없다" 같은 예외 처리를 하려다 보면 if 문이 거미줄처럼 얽힌 이른바 '스파게티 코드'가 탄생하죠.이러한 문제를 깔끔하게 해결해 주는 디자인 패턴이 바로 상태 기계(Finite State Machine, FSM)입니다. 캐릭터가 오직 '하나의 상태'만 가질 수 있도록 열거형(enum)으로 묶어서 관리하는 방법을 알아보겠습니다.1. enum 선언과 상태 ..

25. [고도 엔진] 부드러운 움직임의 비밀: 트윈(Tween) 시스템 완벽 가이드

이 카테고리는 고도 엔진(Godot Engine) 관련 문법을 기록하고 저장하기 위해 만든 공간입니다. 이번에는 게임에서 굳게 닫혀있던 돌문이 스르륵 열리거나, 레벨업 팝업 창이 하고 튀어나오고, 데미지를 입은 몬스터가 서서히 투명해지며 사라지는 연출, 부드러운 애니메이션을 _process 함수에서 매 프레임마다 수학 공식을 써가며 수동으로 만들려면 여간 골치 아픈 일이 아닙니다.이럴 때 고도 엔진의 트윈(Tween) 시스템을 사용하면 "A상태에서 B상태로 N초 동안 부드럽게 변해라!"라고 단 몇 줄의 코드로 우아하게 명령할 수 있습니다. 고도 4버전에서 더욱 강력하고 쓰기 편해진 트윈 활용법을 알아봅시다.1. 트윈 생성과 기본 사용법: A에서 B로 이동하기고도 4에서는 노드 트리에 번거롭게 Tween ..

24. [고도 엔진] 시간에 따른 동작 제어: Timer 노드와 코드 타이머 생성

이 카테고리는 고도 엔진(Godot Engine) 관련 문법을 기록하고 저장하기 위해 만든 공간입니다. 이번에는 게임 개발을 하다 보면 "3초 뒤에 몬스터를 소환해라", "1초마다 플레이어의 체력을 회복시켜라", "스킬을 한 번 쓰면 5초 동안 쿨타임을 적용해라" 같이 시간에 따라 무언가를 제어해야 하는 상황이 정말 많이 발생합니다. 고도 엔진에서는 이를 위해 Timer 노드를 사용하거나, 코드로 직접 타이머를 생성하는 두 가지 방법을 제공합니다.1. Timer 노드 활용하기: 에디터에서 직관적으로 관리하기가장 시각적이고 직관적인 방법은 씬(Scene) 구조에 Timer 노드를 직접 추가하는 것입니다.주요 속성(Inspector 창):Wait Time: 타이머가 작동할 시간(초 단위)입니다. (예: 2...

23. [고도 엔진] 예측 불가능한 재미: 난수 생성기(randi, randf) 활용법

이 카테고리는 고도 엔진(Godot Engine) 관련 문법을 기록하고 저장하기 위해 만든 공간입니다. 이번에는 RPG 게임에서 검을 휘두를 때마다 데미지가 10~15 사이로 다르게 들어가고, 몬스터를 잡았을 때 30% 확률로 희귀한 아이템이 떨어지는 것을 본 적이 있으실 겁니다. 게임에 '예측 불가능한 재미(무작위성)'를 불어넣는 핵심 기술이 바로 난수(Random Number)입니다. 고도 엔진에서 가장 자주 쓰이는 난수 생성 함수들을 알아보겠습니다.1. randi_range(): 주사위 굴리기 (정수 난수)randi는 Random Integer(무작위 정수)의 줄임말입니다. 기본 randi() 함수는 0부터 엄청나게 큰 숫자(약 42억) 사이의 무작위 숫자를 뱉어내기 때문에 그대로 쓰기에는 조금 불..

22. [고도 엔진] 게임 도중 총알 발사하기: 코드로 씬(Scene) 생성(instantiate)

이 카테고리는 고도 엔진(Godot Engine) 관련 문법을 기록하고 저장하기 위해 만든 공간입니다. 이번에는 게임 플레이 도중 플레이어가 총을 쏘면 총알이 나타나고, 보스가 몬스터를 소환하며, 몬스터가 죽으면서 아이템을 떨어뜨립니다. 이처럼 게임이 실행되는 도중에 실시간으로 새로운 오브젝트를 만들어내는 것은 게임 개발의 핵심입니다. 고도 엔진에서는 미리 만들어둔 씬(Scene)을 코드를 통해 찍어내는(Instantiate) 방식으로 이 작업을 수행합니다. 총알 발사를 예시로 씬을 동적으로 생성하는 3단계를 알아보겠습니다.1. preload(): 씬 설계도 가져오기무언가를 찍어내려면 먼저 '설계도'가 필요합니다. 고도 엔진에서는 미리 만들어 저장해 둔 .tscn 파일이 바로 설계도(PackedScene..

21. [고도 엔진] 키보드와 마우스 입력받기: Input 싱글톤과 _input() 함수

이 카테고리는 고도 엔진(Godot Engine) 관련 문법을 기록하고 저장하기 위해 만든 공간입니다. 이번에는 게임에서 플레이어의 조작(입력)을 받는 것은 상호작용의 가장 기본적인 단계입니다. 캐릭터를 움직이거나, 총을 쏘고, UI 버튼을 클릭하는 모든 행동이 바로 이 '입력'에서 시작됩니다. 고도 엔진에서는 크게 두 가지 방법으로 입력을 처리할 수 있습니다. 바로 언제 어디서든 키보드나 마우스의 상태를 확인할 수 있는 Input 싱글톤과, 이벤트가 발생할 때마다 즉각적으로 반응하는 _input() 함수입니다.1. Input 싱글톤: 지금 버튼 누르고 있어? (상태 확인)Input은 고도 엔진이 기본적으로 제공하는 전역 객체(싱글톤)입니다. 게임 루프(예: _process나 _physics_proces..

20. [고도 엔진] 에러 처리와 디버깅 팁 (assert, print_debug, 중단점 활용)

이 카테고리는 고도 엔진(Godot Engine) 관련 문법을 기록하고 저장하기 위해 만든 공간입니다. 이번에는 '에러 처리와 디버깅 팁 (assert, print_debug, 중단점 활용)'입니다.게임 개발은 흔히 '20%의 코딩과 80%의 디버깅(버그 잡기)'으로 이루어져 있다고 합니다. 코드가 길어지고 씬이 복잡해지면 어디서 문제가 발생했는지 찾기가 모래사장에서 바늘 찾기처럼 어려워집니다. 이때 고도 엔진이 제공하는 강력한 디버깅 도구들을 활용하면, 버그가 숨어있는 정확한 위치와 원인을 순식간에 찾아낼 수 있습니다.1. print_debug(): 나 여기 있어요! (위치 추적기)일반적인 print() 함수는 출력창에 글자만 달랑 띄워주기 때문에, 코드가 수천 줄이 넘어가면 이 메시지가 도대체 어디서..

반응형