2.1 - 새 캐릭터 만들기

일인칭 슈팅 프로젝트에 새 캐릭터를 만드는 법을 배워봅니다.

Windows
MacOS
Linux

이번 단계에서는 엔진의 Character 베이스 클래스를 사용하여 새 캐릭터를 만들어 보겠습니다. (Pawn 클래스에서 파생된) Character 클래스에는 걷기, 달리기, 점프와 같은 이족보행 동작이 기본 내장되어 있습니다.

캐릭터 클래스 추가

Visual Studio 솔루션에 *.h 와 *.cpp 파일을 수동 추가할 수는 있지만, C++ 클래스 마법사를 사용해서 프로젝트에 새 클래스를 추가하는 것도 좋은 방법입니다. C++ 클래스 마법사를 사용하면, 엔진에서는 언리얼 전용 매크로를 알아서 구성해 주는 헤더와 소스 템플릿이 생성됩니다.

  1. 파일 메뉴에서 새 C++ 클래스... 를 선택하여 새 부모 클래스를 선택합니다.

    SelectNewCPPClass.png

  2. 부모 클래스 선택 메뉴가 열립니다. 스크롤해 내려가 Character 를 부모로 선택하고 다음 을 클릭합니다.

    ChooseCharacterClass.png

  3. 새 클래스 이름을 "FPSCharacter" 라 한 다음 생성 을 클릭합니다.

    MakeFPSCharacterClass.png

    FPSCharacter 클래스를 생성했으니, Visual Studio 로 전환하여 새로 생성된 클래스에 코드를 추가하면 됩니다. FPSCharacter.hFPSCharacter.cpp 가 열리며, 언리얼 엔진 에서는 새로운 클래스를 자동으로 컴파일하여 코드를 리로드해 줍니다.

캐릭터 클래스 확인

  1. Solution Explorer 에서 FPSProject > Source > FPSProject 를 펼칩니다.

    ExpandedSolutionExplorer.png

  2. FPSCharacter.cpp더블클릭 하여 FPSCharacter 클래스에 대한 구현 파일을 엽니다.

  3. BeginPlay() 함수에 다음 코드줄을 추가하여 FPSCharacter 클래스가 사용중인지 확인합니다:

    if (GEngine)
    {
        // 5 초간 디버그 메시지를 표시합니다. (첫 인수인) -1 "Key" 값은 이 메시지를 업데이트 또는 새로고칠 필요가 없음을 나타냅니다.
        GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, TEXT("We are using FPSCharacter."));
    }
  4. FPSCharacter.cpp 는 다음과 같은 모습일 것입니다:

    // 프로젝트 세팅의 설명 페이지에 저작권 문구를 채우세요.
    
    #include "FPSProject.h"
    #include "FPSCharacter.h"
    
    // 기본값을 설정합니다.
    AFPSCharacter::AFPSCharacter()
    {
        // 매 프레임 Tick() 호출을 위해 이 캐릭터를 설정합니다. 필요치 않은 경우 꺼 주면 퍼포먼스가 향상됩니다.
        PrimaryActorTick.bCanEverTick = true;
    
    }
    
    // 게임 시작시 또는 스폰시 호출됩니다.
    void AFPSCharacter::BeginPlay()
    {
        Super::BeginPlay();
    
        if (GEngine)
        {
            // 5 초간 디버그 메시지를 표시합니다. (첫 인수인) -1 "Key" 값은 이 메시지를 업데이트 또는 새로고칠 필요가 없음을 나타냅니다.
            GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, TEXT("We are using FPSCharacter."));
        }
    }
    
    // 매 프레임 호출됩니다.
    void AFPSCharacter::Tick( float DeltaTime )
    {
        Super::Tick( DeltaTime );
    
    }
    
    // 입력을 위한 함수성 바인딩을 위해 호출됩니다.
    void AFPSCharacter::SetupPlayerInputComponent(class UInputComponent* InputComponent)
    {
        Super::SetupPlayerInputComponent(PlayerInputComponent);
    
    }
  5. Visual Studio 에서 FPSCharacter CPP 파일을 저장합니다.

  6. Solution Explorer 에서 FPSProject 를 찾습니다.

  7. 지금까지는, 에디터의 빌드 버튼을 사용하여 프로젝트를 컴파일해 왔습니다. 이번 단계에서는, Visual Studio 의 빌드 기능을 사용해서 코드를 컴파일해 보도록 하겠습니다. Visual Studio 안에서 코드를 컴파일하려면, FPSProject 에 우클릭하고 Build 를 선택하면 프로젝트가 컴파일됩니다.

    BuildProject.png

  8. 빌드가 끝난 후 언리얼 에디터를 열어 새로 컴파일된 FPSCharacter 클래스가 콘텐츠 브라우저 에 보이는지 확인합니다.

    FPSCharacterContentBrowser.png

CPP FPS 캐릭터 클래스를 블루프린트로 확장

CPP FPS Character 클래스를 블루프린트로 확장하기 좋은 시점이 되었습니다. C++ 클래스를 블루프린트로 확장하는 방법 관련 자세한 정보는 C++ 와 블루프린트 문서를 참고하세요.

  1. FPSCharacter 클래스에 우클릭하여 C++ Class Actions 메뉴를 엽니다.

    CPPClassActionsMenu.png

  2. FPSCharacter 기반 블루프린트 클래스 생성 을 클릭하여 블루프린트 클래스 추가 대화창을 엽니다.

    CreateDerivedBPClass.png

  3. 블루프린트 클래스 이름은 BP_FPSCharacter 라 하고 Blueprints 폴더를 선택한 뒤 블루프린트 클래스 생성 버튼을 클릭합니다.

    AddBPClass.png

  4. 이제, Blueprints 폴더 안에 BP_FPSCharacter 블루프린트 클래스가 새로 생성되어 있을 것입니다.

    AddedBPClass.png

  5. BP_FPSCharacter 블루프린트를 저장하고 블루프린트 에디터를 닫으세요.

기본 폰 클래스 설정

새로 변경된 게임 모드를 블루프린트로 확장시키는 데 성공했으니, 이 단계에서는 프로젝트가 BP_FPSCharacter 를 기본 폰으로 사용하도록 설정해 주겠습니다.

  1. 편집 메뉴에서 프로젝트 세팅 을 클릭합니다.

  2. 프로젝트 세팅 탭 왼편의 프로젝트 제목줄 아래, 맵 & 모드 를 클릭합니다.

  3. Default Pawn (기본 폰) 드롭다운 메뉴에서 BP_FPSCharacter 를 선택합니다.

    SettingFPSCharacter.png

  4. 프로젝트 세팅 메뉴를 닫습니다.

  5. 레벨 에디터 툴바의 플레이 버튼을 클릭합니다. 부포트 좌상단 구석 "Hello World, this is FPSGameMode!" 아래 "We are using FPSCharacter." 라는 문구가 빨간 색으로 5 초간 표시됩니다.

    VerifyingFPSCharacterResult.png

    움직일 수 없다면, FPSCharacter 가 폰으로 제대로 사용되고 있는 것입니다! 새 캐릭터에 아직 무브먼트 컨트롤이 없는 상태이므로, 레벨에서 이동이 불가능할 것입니다.

  6. 다음 단계로 넘어가기 전, Esc 키를 누르거나 레벨 에디터의 중지 버튼을 눌러 에디터에서 플레이(PIE) 모드를 빠져나갑니다.

Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼