본문 바로가기
Godot

[GodotDocs][Step by step] 2. 인스턴스 생성

by 채식금지 2023. 12. 24.
728x90

본 게시글은 고도엔진 공식문서에 작성된 Creating instances를 정리하였습니다.

 

 

  • 고도엔진 프로젝트는 여러개의 씬으로 분할할 수 있다.
  • 씬은 .tscn 파일로 저장하고, 이러한 .tscn 파일을 PackedScene 이라고 부른다.
  • 저장된 씬은 다른 씬에서 복제하여 사용할 수 있고, 씬을 복제하는 과정을 인스턴싱(Instancing)이라고 부른다.

 

실습

프로젝트 불러오기

  • 고도엔진 공식 문서에서 실습용으로 제공하는 instancing_starter.zip을 다운 받는다.
  • 다운 받은 실습용 프로젝트는 윈하는 위치에 압출을 풀어둔다.
  • 고도엔진을 실행하여 Project Manager 창을 연 후 상단에 있는 Import 버튼을 선택한다.
  • 처음 Import 버튼을 선택하면 Import Existing Project 창과 Open a File or Directory 창이 동시에 열린다.
  • Open File or Directory 창이 열리면 압축을 풀었던 instancing_starter 폴더를 선택한다.
  • project.godot 파일을 선택한 후 Open 버튼을 선택하거나 project.godot 파일을 더블 클릭한다.
  • Import Existing Project 창만 남으면 Import & Edit 버튼을 선택하여 프로젝트를 불러온다.

인스턴스 생성

  • 프로젝트가 열리면 에디터 상단에서 2D 뷰포트를 선택한다.
  • 오른쪽 하단에 있는 FileSystem 도크에서 Main.tscn 씬을 불러온다.
  • Main 씬이 열리면 Scene 도크에 있는 링크 아이콘을 선택한다.
  • Instance Child Scene 팝업창이 열리면 Ball.tscn 씬을 선택한 후 Open 버튼을 누르거나 선택한 씬을 더블 클릭한다.
  • FileSystem 도크에서 Ball.tscn 씬을 선택한 후 Scene 도크로 드래그 앤 드롭하여도 된다.
  • 뷰포트에 나타난 공을 선택한 후 드래그하여 원하는 위치에 배치한다.
  • FileSystem 도크에서 선택한 Ball.tscn 씬을 뷰포트로 바로 드래그하는 것도 가능하다.
  • 오른쪽 상단의 Run Project를 선택하여 프로젝트를 실행하면 떨어지는 공이 벽에 충돌하는 것을 확인할 수 있다.

  • 동일한 방법으로 여러개의 공을 배치할 수 있다.
  • 여러개의 공을 배치하면 노드 이름이 중복되지 않도록 자동으로 이름 뒤에 숫자가 붙는다.

씬과 인스턴스 편집

  • Ball.tscn 씬에서 Ball노드를 선택한 후 Inspector 도크에서 공의 속성을 변경한 후 저장하면 Main.tscn에 배치했던 모든 공의 속성이 변경된다.
    • Ball.tscn 씬을 열고 Ball 노드를 선택한다.
    • Inspector 도크에서 PhysicsMaterial 프로퍼터를 선택하여 내용을 확장한다.
    •  
    • Bounce 속성 옆에 있는 숫자 필드를 선택하여 0.5를 입력한다.
    • Run Project를 선택하면 이전 보다 더 많이 튀어 오르는 공들을 확인할 수 있다.
    • 씬을 저장하지 않아도 Run Project를 선택하면 씬은 자동으로 저장된다.
  • Main.tscn 씬에 배치한 공들 중 1개를 선택한 후 Inspector 도크에서 선택한 공의 속성만 변경할 수 있다.
    • Main.tscn 씬을 열고, 배치했던 공들 중 1개를 선택한다.
    • Inspector 도크에서 Gravity Scale 속성 옆의 숫자 필드를 선택하여 10을 입력한다.
    • Run Project 를 선택하면 다른 공들보다 더 빨리 추락하는 1개의 공을 확인할 수 있다.
    • 변경된 속성은 되돌리기 아이콘을 클릭하여 초기값으로 되돌릴 수 있다.

 

디자인 언어로서 씬 인스턴스

  • 고도 엔진으로 게임을 제작할 때, MVC(Model-View-Controller), ERD(Entity-Relation Diagram) 같은 패턴을 사용하는 것을 권장하지 않는다.
  • 플레이어가 게임에서 보게 될 요소를 상상하고 이를 중심으로 코드를 구성하는 것 부터 시작하는 것을 권장한다.