[Godot Engine] 2D 게임 자습서(Part.2)
14006 단어 Godot
Godot Engine을 사용하여 2D 게임의 튜토리얼 Part를 만듭니다.2.
마지막 페이지는 여기 있습니다.
↓↓↓
이번에는 클릭 게임으로 클릭 대상을 만든다.
Main 탭 옆에 있는 +를 클릭하여 새 장면을 생성합니다.
그런 다음 빈 장면을 생성합니다.
이번에는 2D 장면이 아닌 다른 노드를 선택합니다.
Node의 새 화면에서 검색할 위치
Area2D
를 입력하고 Area 2D를 선택하고 제작을 클릭합니다.그런 다음 노드
Area2D
를 생성합니다.경고를 표시하려면 이 단추를 누르십시오.
그런 다음 경고 내용이 표시됩니다.
Area2D
는 평균 판정용CollisionShape2D
또는 CollisionPolygon2D
이 필요한 노드다.노드 설정이 부족하면 경고가 표시됩니다.따라서 사용하지 않은 노드의 기능을 시도하려면 경고를 주의하고 사용하십시오. 이렇게 하면 더욱 좋을 수 있습니다.경고는 잠시 보류하고 노드 이름을 Enemy로 변경합니다.
이름을 변경한 후 장면을
Ctrl+S
(macOS에서 Cmd+S)에 저장합니다.이름이
Enemy.tscn
인지 확인한 후 저장(Save)을 사용하여 저장합니다.탭에는 Enemy, 파일 시스템에는 Enemy.tscn이 표시됩니다.
적의 이미지 등록
적의 이미지에 로그인합니다.Godot 항목에는 기본 "icon.png"소재가 포함되어 있으므로 드래그 앤 드롭합니다.
그래서 Godot군의 초상화가 배치되었고 Enemy 노드에서'icon'이 추가되었습니다.
검사기 확인
Sprite
"icon"노드를 클릭하여 선택하십시오.그런 다음 오른쪽에 [검사자] 항목이 표시됩니다.이것은 "icon"노드의 상세한 정보입니다.
자세히 보면
Sprite
,'아이콘'노드는 Sprite
형으로 나타났다.그런 다음 검사자
Node2D > Transform
에서 회전 화살표를 클릭합니다.그런 다음 이미지의 위치가 초기값(원점)으로 재설정됩니다.
Godot에서 회전 화살표를 클릭하면 수치가 초기값으로 돌아가는데, 원래 상태로 돌아가려면 회전 화살표를 누르면 먼저 초기 상태로 들어갈 수 있어 편리하다.
충돌 정보 추가
Enemy 노드를 마우스 오른쪽 버튼으로 클릭하고 하위 노드 추가를 선택합니다.
새로운 추가 노드 화면이 나오기 때문에 다음 순서대로 제작
CollisionShape2D
한다.선택
CollisionShape2D
그런 다음 Enemy 노드에서 추가
CollisionShape2D
합니다.검사자
Shape > [空]
를 클릭하고 새 RectangleShape 2D를 선택합니다.그리고
Shape
에 설정RectangleShape2D
.이것은 직사각형(직사각형)으로 판정되는 형태의 설정이다.
그러면 가운데 그림을 마우스 롤러로 확대합니다.
[+] 버튼을 사용하여 확대할 수도 있습니다.
그리고 그림의 중앙에 판정을 표시합니다.
오른쪽 위 모서리의 빨간색 원을 마우스로 드래그하여 이미지 크기를 조정합니다.
동작 스크립트 만들기
스크립트를 실행하여 이 대상의 운동을 정의합니다.
Enemy 노드를 마우스 오른쪽 버튼으로 클릭하고 스크립트 첨부를 선택합니다.
스크립트 첨부 대화 상자를 표시하고 [만들기]를 클릭합니다.
그런 다음 노드 옆에 스크립트 아이콘을 표시하고 스크립트 편집기를 표시합니다.
또한 2D 편집 및 스크립트의 편집 화면 전환은 화면에 있는 아이콘으로 전환됩니다.
스크립트는 다음과 같습니다.
Enemy.gd
extends Area2D
# 画面サイズ
var screen:Rect2
# 移動速度
var velocity:Vector2
func _ready():
# 画面サイズを取得
screen = get_viewport_rect()
# 移動速度をランダムで決定
velocity.x = rand_range(-300, 300)
velocity.y = rand_range(-300, 300)
func _process(delta):
# 移動処理
position += velocity * delta
# 画面のはしでバウンドさせる
if position.x < 0:
# 左側
position.x = 0
velocity.x *= -1
if position.y < 0:
# 上側
position.y = 0
velocity.y *= -1
if position.x > screen.size.x:
# 右側
position.x = screen.size.x
velocity.x *= -1
if position.y > screen.size.y:
# 下側
position.y = screen.size.y
velocity.y *= -1
이것은 화면 안에서 왔다갔다 이동하는 스크립트다._ready()
는 이 대상이 생성된 후 바로 호출되는 함수입니다._process()
는 정기적으로 호출되는 함수로 delta
에는 지난번 호출 후의 경과 시간(초)이 포함되어 있다.따라서 속도
velocity
를 delta
와 곱하면 작업 환경에 의존하지 않는 규격의 일정한 속도에 도달할 수 있다.그럼 이 스크립트의 동작을 확인하세요.
오른쪽 상단에 있는 "실행 시나리오"버튼(※ "▶」아이콘)
실행하면 Godot군이 화면 안에서 왔다 갔다 이동합니다.
또
get_viewport_rect()
에서 화면 사이즈를 얻었지만 뷰포트가 반드시 화면 사이즈는 아니다. 예를 들어 화면 사이즈를 조정하면 정확하게 판정할 수 없다.사이즈 조정에 관한 문제는
メニュー > プロジェクト > プロジェクト設定
의Display > Window > Mode
를viewport로 자동 축소하고 Resizable
를무효로 설정하여 크기를 조정할 수 없음 등으로 처리할 수 있다.주 필드에서 적을 배치
Main 장면의 탭을 클릭하거나 파일 시스템에서 Main.tscn을 두 번 클릭하여 Main 장면을 엽니다.
그러나 편집기는 여전히 스크립트입니다. [2D]를 클릭하여 2D 장면의 편집 모드로 전환합니다.
2D 장면으로 전환한 후 파일 시스템에서 "Enemy.tscn"구성 Godot 군을 드래그합니다.
4 개 정도 구성.
장면에는 Enemy, Enemy2, Enemy3, Enemy4가 추가됩니다.
참고로 2D 장면에는 파란색 선이 있는데 이것이 바로 화면 사이즈의 마법사입니다.
하면, 만약, 만약...▶」공사를 운행하다.
실행하면 복수의 Godot이 화면 안에서 이동한다.
다음번
섹션 3(최종 회)이 계속됩니다.
↓↓↓
Reference
이 문제에 관하여([Godot Engine] 2D 게임 자습서(Part.2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/2dgames_jp/items/169b637aa8a0164c274c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)