서울대학교 전기정보공학부 졸업
현재 스타트업에 재직중인 게임 개발자입니다
어려운 코딩, 쉬워질 때까지 박치기!
cobak7@naver.com
강의
수강평
- 고도 엔진(Godot Engine)을 통한 게임 개발 박치기!! - 기본 개념부터 실전 게임 제작까지 한방에!
- 고도 엔진(Godot Engine)을 통한 게임 개발 박치기!! - 기본 개념부터 실전 게임 제작까지 한방에!
게시글
질문&답변
섹션2 규칙의 필요성 부분에서 Godot 4 Function Chaining 이란?
get_tree().root과 get_tree().get_root()의 결과는 정확히 동일합니다.전자는 root 프로퍼티에 직접 접근하는 방식이고, 후자는 getter라는 함수를 호출하는 방식의 차이입니다. 유니티 C#에서는 접근 제한자(public, private)라는 개념이 있어서private 변수에 대해서는 외부에서 변수(root)로의 접근이 전자(.root)로는 불가능하고, 후자(get_root())로만 접근이 가능하다는 점에서 의미있는 차이가 있습니다. 그런데 GDscript는 파이썬을 많이 베껴온 언어인데, 파이썬은 모든 변수가 기본적으로 public이어서전자 후자의 유의미한 차이가 없다고 보시면 됩니다. 저도 차이점이 function chaining정도 밖에는 안떠오르네요. 강의에서 var c = get_tree().get_root().get_node("Grandparent/Parent1/Child1") 한줄의 코드는요컨대 아래 세 줄의 코드와 동일한 코드입니다.var my_scene_tree = get_tree()var my_window = my_scene_tree.get_root()var c = my_window.get_node("Grandparent/Parent1/Child1")딱봐도 한줄로 쓰는게 잘 읽히고 편해 보입니다..^^function(메서드) chaining(이어붙이기)은 간결하고 눈에 띄는 코드를 쓸 수 있게끔 쓰는 방법이고파이썬에서 가능한 건데 이걸 GDscript가 가져온 것입니다.메서드(함수)는 프로퍼티와 달리 무조건 입력과 출력이 존재(그것이 0개일지라도)한다는 개념을 유념하셔야 합니다.그래서 출력(return)이 있기 때문에 그 출력을 다른 메서드.() 에 이어붙이고 그 출력을 다른 메서드.()에 이어붙이고 하는 것입니다.프로퍼티 자체를 가지고는 function chaining을 할 수 없습니다. 관련 개념인 setter 함수는 섹션4 '문제 1' 영상에서 간단히 다루었습니다.감사합니다!
- 0
- 2
- 29
질문&답변
웨이브 핸들러 섹션에서 Custom Resource
네 맞습니다 스크립터블 오브젝트와 기능적으로는 거의 같다고 보시면 되고개인적으로는 고도의 custom resource가 훨씬 더 편리하고 강력하다고 느끼고 있습니다다가오는 업데이트에 custom resource를 이용한 저장과 로드 구현하는 컨텐츠를 담을 예정입니다감사합니다!
- 0
- 2
- 39
질문&답변
ObjectHandler 에서
(사진)obj.rotation = Vector2.RIGHT.angle_to(dir) 줄을 삭제해보고(=주석 처리하고) 전체 게임을 실행해보면(사진)로켓들이 플레이어 우주선 방향(dir)에 관계없이 항상 오른쪽(obj.rotation = Vector2.RIGHT)을 바라본 채로 날아가게 됩니다.그래서 미사일의 방향을 꺾어주기 위해 obj.rotation = Vector2.RIGHT.angle_to(dir) 을 해주어야 하는 것입니다(나머지 무기 2종은 공모양이어서 회전이 의미가 없기는 합니다)조금 더 보충 설명하자면dir은 플레이어 우주선이 바라보는 방향을 가리키는 것이며(사진)player.gd의 fire_rocket함수에서 찾을 수 있습니다. (파란 박스 부분을 dir로 emit하는 것)(사진)미사일의 rotation을 파란색 화살표(dir)만큼 회전해줄 필요가 있는 것입니다. 코드를 거슬러 올라가거나 디버깅할때 '컨트롤+함수클릭'이나 '컨트롤+쉬프트+F'로 검색하는 기능이 유용합니다. 이해안가시는 부분 질문 많이 주세요감사합니다!
- 1
- 1
- 57