본문 바로가기
Godot

[GodotDocs][Step by step] 3. 첫 번째 스크립트 만들기(C#)

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

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

 

 

프로젝트 설정

  • 프로젝트를 새로 만든다.
  • Scene 도크에서 Other Node를 선택여 팝업창을 연다.
  • Create New Node 팝업창이 열리면, 검색창에 Sprite2D 노드를 검색한다.
  • Sprite2D 노드를 선택한다.
  • Create 버튼을 선택하여 Sprite2D 노드가 루트 노드로 생성되도록 만든다.
  • Sprite2D 노드가 프로젝트를 만들었을 때 기본 제공하는 icon.svg 파일을 출력하도록 만든다.
  • Sprite2D 노드를 선택한 후 icon.svg 파일을 Inspector 도크의 Texture 속성에 드래그 앤 드롭한다.
  • icon.svg 파일을 Sprite2D 노드에 드래그 앤 드롭해도 된다.
  • 뷰포트에서 아이콘을 드래그하여 원하는 위치에 배치한다.

C# 개발환경 설정

  • C# 환경에서 작업하려면 반드시 Godot Engine - .NET 버전으로 받아야 된다.
  • 상단 메뉴에서 Editor>Editor Settings... 를 선택한다.
  • Editor Settings 팝업창이 열리면 왼쪽 메뉴에서 Dotnet>Editor 를 선택한다.
  • External Editor 설정에서 원하는 스크립트 에디터를 선택하고, 팝업창을 닫는다.
  • 스크립트 에디터 선택은 최초 한 번만 하면 된다.
  • 상단 메뉴에서 Project>Tools>C#>Create C# solution을 선택한다.
  • C# 솔루션 생성은 프로젝트를 만들 때마다 해야 된다.

스크립트 새로 만들기

  • Sprite2D 노드를 우클릭하여 나온 메뉴에서 Attach Script... 를 선택한다.
  • Scene 도크 오른쪽 상단에 있는 아이콘을 선택해도 된다.
  • Attach Node Script 팝업창이 열리면 아래 서술한 설정을 완료한 후 Create 버튼을 선택한다.
    • Language → C#
    • Template → Object: Empty
    • Path → \res://MySprite2D.cs
  • 스크립트를 생성하면 C# 개발환경을 설정할 때 선택했던 스크립트 에디터가 자동으로 열리게 된다.

Hello, world!

  • 스크립트 에디터에 아래 내용을 작성한 후 저장한다.
public MySprite2D()
{
    GD.Print("Hello, world!");
}
  • GD.Print 메소드는 고도 엔진 에디터 하단의 Output 창에 입력한 텍스트를 출력 시켜준다.
  • 고도 엔진 에디터의 오른쪽 상단에 있는 Build Project 를 선택하여 변경된 내용을 적용한다.
  • 작업했던 씬은 sprite_2d.tscn 으로 저장한다.
  • Run Project를 선택하여 프로젝트를 실행한 후 Output 창을 확인해본다.

이미지 회전

  • MySprite2D.cs 에 필드를 추가한다.
int speed = 400;
float angularSpeed = Mathf.Pi;
  • 처음 추가했던 생성자 아래에 _Process 메소드를 오버라이드 한다.
  • _Process 메소드는 매 프레임마다 호출된다.
  • _Process 메소드 안에 노드의 회전(Rotation)을 수정하는 코드를 작성한다.
public override void _Process(double delta)
{
    Rotation += angularSpeed * (float)delta;
}
  • MySprite2D.cs 파일을 저장한다.
  • 오른쪽 상단의 Build Project를 선택하여 변경된 내용을 적용한다.
  • 오른쪽 상단의 Run Project 를 선택하여 결과를 확인한다.

이미지 이동

  • _Process 메소드 안에 노드의 위치(Position)을 수정하는 코드를 작성한다.
var velocity = Vector2.Up.Rotated(Rotation) * speed;
Position += velocity * (float)delta;
  • Vector2.Up.Rotated 메소드에 Rotation을 입력하면 아이콘을 기준으로 위쪽 방향 벡터를 구할 수 있다.
  • 방향 벡터에 미리 정의해둔 속도(speed)를 곱해 속도 벡터를 구한다.
  • 속도 벡터를 Position에 더하면 노드는 이이콘을 기준으로 위쪽으로 계속 이동하게 된다.
  • MySprite2D.cs 파일을 저장한다.
  • 오른쪽 상단의 Build Project를 선택하여 변경된 내용을 적용한다.
  • 오른쪽 상단의 Run Project 를 선택하여 결과를 확인한다.

완성된 스크립트

using Godot;
using System;

public partial class MySprite2D : Sprite2D
{
    int speed = 400;
    float angularSpeed = Mathf.Pi;

    public MySprite2D()
    {
        GD.Print("Hello, world!");
    }

    public override void _Process(double delta)
    {
        Rotation += angularSpeed * (float)delta;

        var velocity = Vector2.Up.Rotated(Rotation) * speed;
        Position += velocity * (float)delta;
    }
}