[Godot Engine] 2D 게임 자습서(Part.2)

14006 단어 Godot
개요
Godot Engine을 사용하여 2D 게임의 튜토리얼 Part를 만듭니다.2.
마지막 페이지는 여기 있습니다.
↓↓↓
  • Godot Engine 2D 게임 자습서(Part.1)
  • 게임 개체 만들기
    이번에는 클릭 게임으로 클릭 대상을 만든다.
    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한다.
  • 검색에 "CollisionShape 2D"및 입력
  • 입력

  • 선택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에는 지난번 호출 후의 경과 시간(초)이 포함되어 있다.
    따라서 속도velocitydelta와 곱하면 작업 환경에 의존하지 않는 규격의 일정한 속도에 도달할 수 있다.
    그럼 이 스크립트의 동작을 확인하세요.
    오른쪽 상단에 있는 "실행 시나리오"버튼(※ "▶」아이콘)

    실행하면 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(최종 회)이 계속됩니다.
    ↓↓↓
  • Godot Engine 2D 게임 자습서(Part.3)
  • 좋은 웹페이지 즐겨찾기