728x90
본 게시글은 고도엔진 공식문서에 작성된 Creating your first script를 정리하였습니다.
프로젝트 설정
- 프로젝트를 새로 만든다.
- Scene 도크에서 Other Node를 선택여 팝업창을 연다.
- 검색창(Search:)에 Sprite2D 라고 입력한다.
- Sprite2D 노드를 선택한다.
- Create 버튼을 선택하여 Sprite2D 노드가 루트 노드로 생성되도록 만든다.
- Sprite2D 노드가 프로젝트를 만들었을 때 기본 제공하는
icon.svg
파일을 출력하도록 만든다.
- Sprite2D 노드를 선택한 후
icon.svg
파일을 Inspector 도크의 Texture 속성에 드래그 앤 드롭한다.
icon.svg
파일을 Sprite2D 노드에 드래그 앤 드롭해도 된다.
- 뷰포트에서 아이콘을 드래그하여 원하는 위치에 배치한다.
스크립트 새로 만들기
- Sprite2D 노드를 우클릭하여 나온 메뉴에서 Attach Script... 를 선택한다.
- Scene 도크 오른쪽 상단에 있는 아이콘을 선택해도 된다.
- Attach Node Script 팝업창이 열리면 아래 서술한 설정을 완료한 후 Create 버튼을 선택한다.
- Language → GDScript
- Template → Object: Empty
- Path → \res://my_sprite_2d.gd
- 스크립트를 생성하면 자동으로 스크립트 에디터가 활성화된다.
Hello, world!
- 스크립트 에디터에 아래 내용을 작성한 후 저장한다.
func _init():
print("Hello, world!")
_init
은 클래스 생성자와 같은 역할을 한다.print
함수는 고도 엔진 에디터 하단의 Output 창에 입력한 텍스트를 출력 시켜준다.- 작업했던 씬은
sprite_2d.tscn
으로 저장한다. - Run Project를 선택하여 프로젝트를 실행한 후 Output 창을 확인해본다.
이미지 회전
my_sprite_2d.gd
에 맴버 변수를 추가한다.- 맴버 변수는 extentds Sprite2D 아래에 추가한다.
var speed = 400
var angular_speed = PI
- 처음 추가했던
_init
함수 아래에_process
함수를 추가한다. _process
함수는 매 프레임마다 호출된다._process
함수 안에 노드의 회전(rotation)을 수정하는 코드를 작성한다.
func _process(delta):
rotation += angular_speed * delta
my_sprite_2d.gd
파일을 저장한다.- 오른쪽 상단의 Run Project 를 선택하여 결과를 확인한다.
이미지 이동
_process
함수 안에 노드의 위치(position)을 수정하는 코드를 작성한다.
var velocity = Vector2.UP.rotated(rotation) * speed
position += velocity * delta
Vector2.UP.rotated
메소드에 rotation을 입력하면 아이콘을 기준으로 위쪽 방향 벡터를 구할 수 있다.- 방향 벡터에 미리 정의해둔 속도(speed)를 곱해 속도 벡터를 구한다.
- 속도 벡터를 position에 더하면 노드는 이이콘을 기준으로 위쪽으로 계속 이동하게 된다.
my_sprite_2d.gd
파일을 저장한다.- 오른쪽 상단의 Run Project 를 선택하여 결과를 확인한다.
완성된 스크립트
extends Sprite2D
var speed = 400
var angular_speed = PI
func _init():
print("Hello, world!")
func _process(delta):
rotation += angular_speed * delta
var velocity = Vector2.UP.rotated(rotation) * speed
position += velocity * delta
'Godot' 카테고리의 다른 글
[GodotDocs][Step by step] 4. 플레이어 입력 수신(C#) (2) | 2023.12.29 |
---|---|
[GodotDocs][Step by step] 4. 플레이어 입력 수신(GDScript) (0) | 2023.12.29 |
[GodotDocs][Step by step] 3. 첫 번째 스크립트 만들기(C#) (0) | 2023.12.27 |
[GodotDocs][Step by step] 2. 인스턴스 생성 (0) | 2023.12.24 |
[GodotDocs][Step by step] 1. 노드와 씬 (2) | 2023.12.22 |