개발팀에 합류하여 Ver의 게임 개발 YouTube를 지원하세요!
Ver의 게임 개발 Youtube
안녕하세요! 여러분과 함께 게임 개발을 공부하는 베르입니다! 게임 개발에 도움이 되는 강의를 올리는 채널입니다! [투네이션 후원] https://toon.at/donate/637735212761460238 [유니티 어필리에이트
www.youtube.com
안녕하세요! 여러분들과 함께 게임 개발을 공부하는 베르입니다!
이번에는 언리얼 엔진으로 탑다운 슈팅 게임 컨트롤 기능을 구현해봅시다.
리소스 – https://drive.google.com/file/d/1EUdtP7LeL5yfyRPmKG6WGiLCXBMVkmeC/view?usp=sharing
예제 – https://drive.google.com/file/d/1A9vkBRMp2YbmrA7HoGnAxWvRvZQfDG7H/view?usp=sharing
사용 엔진 버전 : 4.27
타임라인
0:00 인트로
0:11 프로젝트 생성과 맵 세팅
1:18 이동 입력 매핑과 Player Controller 생성
2:24 이동 기능 구현
3:24 캐릭터가 마우스 커서 바라보게 하기
4:40 캐릭터 구현
7:33 캐릭터 세팅
8:27 게임 모드 설정
9:41 아웃트로
인트로
안녕하세요. 여러분들과 함께 게임 개발을 공부하는 베르입니다.
이번에는 언리얼 엔진으로 탑다운 슈팅 게임의 컨트롤 방식을 구현하는 방법을 알아보도록 하겠습니다.
프로젝트 생성과 맵 세팅
먼저 프로젝트를 생성하겠습니다.
게임 카테고리에서 아무것도 포함되지 않은 기본 템플릿을 선택합니다.
그리고 프로젝트 세팅에서 C++프로젝트를 선택하고 시작용 콘텐츠를 없음으로 하여 프로젝트를 생성합니다.
프로젝트 생성이 완료되고 나면 먼저 영상 하단의 링크에서 리소스를 다운로드 받아서 압축을 해제합니다.
그리고 에디터의 콘텐츠 브라우저에 우클릭하고 [/Game에 임포트] 항목을 선택한 후 방금 다운로드하고 압축을 푼 파일을 찾아 가져옵니다.
다음으로 레벨의 바닥 역할을 하는 개체의 영역을 늘리고 플레이어의 이동을 방해하는 개체를 배치합니다.
지도 설정 후 상단 메뉴바에서 [파일 > 현재 레벨 저장] 항목을 선택하고 Maps 폴더를 만들고 레벨 이름을 지정하고 저장합니다.
그런 다음 프로젝트 설정 창을 열고 맵 및 모드에서 에디터 시작 맵과 게임 기본 맵을 방금 생성하고 저장한 맵으로 설정합니다.
이동 입력 매핑 및 PlayerController 생성
다음으로 캐릭터를 조작하는 데 필요한 입력 매핑을 만들 차례입니다.
프로젝트 설정 창에서 [엔진 > 입력] 항목을 찾아 선택합니다.
그리고 MoveForward라는 이름으로 W와 S를 매핑하고 MoveRight라는 이름으로 A와 D를 매핑합니다.
입력 매핑이 완료되면 PlayerController를 사용하여 캐릭터 제어 기능을 구현할 차례입니다.
상단 메뉴바에서 [파일 > 새로운 C++ 클래스] 항목을 선택하여 C++ 클래스 추가 창을 불러옵니다.
그리고 PlayerController 클래스를 부모 클래스로 선택하고 TopdownPlayerController라는 클래스를 만듭니다.
클래스 생성이 완료되면 TopdownPlayerController 헤더 파일로 이동하여 생성자를 선언합니다.
생성자 선언을 작성한 후 소스 파일로 이동하여 생성자를 구현하고 bShowMouseCursor 속성을 true로 선언하여 게임 플레이 중에 마우스 커서가 보이도록 합니다.
이동 기능 구현
그런 다음 다시 헤더 파일로 이동하여 MoveForward 함수와 MoveRight 함수를 만들어 캐릭터를 이동하고 UFUNCTION 매크로를 첨부합니다.
이렇게 함수를 선언한 후 TopDownCharacter 클래스의 소스 파일로 이동하여 각 함수를 구현합니다.
1인칭 슈팅이나 일반적인 3인칭 슈팅 게임에서는 캐릭터의 방향을 획득하여 움직이도록 구현하지만, 현재 제작 중인 탑다운 3인칭 슈팅 게임은 카메라를 팽이에 고정하고 플레이하는 방식이다. -down 방식이므로 이러한 Move 함수는 세계의 전면과 오른쪽을 이동하는 데 사용됩니다. 그리고 캐릭터를 움직이게 합니다.
Move 유형 함수의 선언 및 구현을 마친 후 헤더 파일로 돌아가서 SetupInputComponent 함수의 재정의를 선언합니다.
그런 다음 소스 파일로 돌아가서 SetupInputComponent 함수를 구현하고 이전에 구현된 MoveForward 및 MoveRight 함수를 각 입력 매핑에 바인딩합니다.
캐릭터가 마우스 커서를 바라보게 합니다.
캐릭터 이동 기능을 완료했으므로 이제 캐릭터가 마우스 커서를 바라보도록 하는 LookMouseCursor 함수를 만들 차례입니다.
헤더 파일로 돌아가서 LookMouseCursor 함수를 선언합니다.
그런 다음 소스 파일로 이동하여 다음을 포함합니다.
그리고 LookMouseCursor 함수에서 앞서 선언한 KismetMathLibrary에 포함된 FindLookAtRotation 함수를 사용하여 플레이어 컨트롤러가 소유한 폰이 마우스 커서 방향을 향하도록 합니다.
함수를 구현한 후 헤더 파일로 돌아가서 매 틱마다 LookMouseCursor 함수를 호출하도록 PlayerTick 함수를 재정의합니다.
그런 다음 소스 파일로 이동하여 PlayerTick 함수를 구현하고 LookMouseCursor 함수를 호출하는 코드를 작성합니다.
코드를 작성한 후 작성한 코드를 저장하고 에디터로 돌아와 컴파일 버튼을 누릅니다.
캐릭터 구현
캐릭터 컨트롤을 구현한 후에는 캐릭터를 구현할 차례입니다.
상단 메뉴바에서 [파일 > 새로운 C++ 클래스] 항목을 선택하여 C++ 클래스 추가 창을 불러옵니다.
그리고 Character 클래스를 부모 클래스로 선택하고 TopDownCharacter라는 클래스를 만듭니다.
클래스 생성이 완료되면 TopdownCharacter 클래스의 헤더 파일로 이동하여 UCameraComponent* 타입의 CameraComponent와 USpringArmComponent* 타입의 SpringArmComponent를 멤버 변수로 선언합니다.
이러한 변수를 사용하여 카메라 위치를 하향식 슈팅 스타일 게임에 적합한 위치로 설정합니다.
변수 선언이 끝나면 소스 파일로 이동하여 필요한 헤더를 소스 파일 상단에 포함시킵니다.
선언할 헤더는 다음과 같습니다.
헤더 선언이 끝나면 생성자 함수로 가서 캐릭터에 필요한 것들을 차례대로 초기화한다.
먼저 GetCapsuleComponent로 캐릭터의 콜라이더를 가져와 크기를 설정합니다.
둘째, 카메라 회전에 따라 캐릭터가 회전하지 않도록 bUseControllerRotation 속성의 각 요소를 false로 변경합니다.
셋째, GetCharacterMovement로 캐릭터의 움직임을 가져와서 bOrientRotationMovement를 false로 변경하여 캐릭터의 이동 방향과 현재 캐릭터의 방향이 달라서 바로 움직입니다.
넷째, SpringArmComponent를 만들어 연결하고 캐릭터에 대한 거리와 각도를 조정합니다.
여기에서 bInheritPitch, bInheritRoll 및 bInheritYaw를 false로 변경하여 스프링 암이 루트 및 부모 구성 요소를 따라 회전하지 않도록 합니다.
그런 다음 TargetArmLength를 사용하여 캐릭터와 카메라 사이의 거리를 조정하고 SetRelativeRotation을 사용하여 카메라가 캐릭터를 내려다보는 각도를 조정합니다.
그리고 bDoCollisionTest를 false로 변경합니다.
카메라가 벽에 부딪혔을 때 충돌 계산을 통해 카메라와 캐릭터 사이의 거리를 좁혀서 카메라가 벽을 통과하지 않도록 하는 속성이지만, 탑다운에서는 사용하지 않아도 됩니다. 슈팅게임.
다섯째, 카메라를 만들고 스프링 암 구성 요소에 연결합니다.
마지막으로 bStartWithTickEnabled를 true로 변경합니다.
모든 코드 작업이 끝나면 저장하고 에디터로 가서 컴파일 버튼을 누릅니다.
캐릭터 설정
컴파일이 완료되면 콘텐츠 브라우저 패널에 Bluprints 폴더를 생성하고 TopdownCharacter 클래스를 찾아 우클릭합니다. [TopdownCharacter 기반 블루프린트 클래스 생성]선택하다
그리고 Blueprints 폴더에 Blueprint 클래스를 생성합니다.
청사진이 생성되면 생성된 청사진 클래스를 더블 클릭하여 청사진 편집기를 열고 구성 요소 패널에서 메시 구성 요소를 선택합니다.
그런 다음 디테일 패널에서 메시 카테고리를 찾아 이전에 스켈레탈 메셔에서 임포트한 Boxman으로 설정합니다.
스켈레탈 메시를 설정한 후 블루프린트 에디터의 뷰포트 패널을 보면 캐릭터의 메시가 캡슐 콜로이드 외부에 있고 방향이 다른 것을 볼 수 있습니다.
이를 일치시키려면 메쉬 구성 요소의 위치 Z 값을 -90.0으로 수정하고 회전 Z 값을 -90.0으로 수정합니다.
모든 설정이 완료되면 Blueprint 클래스를 컴파일하고 저장합니다.
게임 모드 설정
플레이어 컨트롤러와 캐릭터가 모두 설정되었으므로 이제 우리가 만든 플레이어 컨트롤러와 캐릭터를 게임에서 사용하도록 할 차례입니다.
콘텐츠 브라우저 패널에서 TopdownShooterGameModeBase 클래스를 찾아 우클릭합니다. [TopdownShooterGameModeBase 기반 블루프린트 클래스 생성] 항목을 선택합니다.
그리고 Blueprints 폴더 안에 게임 모드 블루프린트를 생성합니다.
게임 모드 블루프린트가 생성되면 더블클릭하여 블루프린트 에디터를 열고, 디테일 패널에서 Player Controller Class를 TopdownPlayerController로, Default Pawn Class를 BP_TopdownCharacter로 설정합니다.
그런 다음 청사진을 컴파일 및 저장하고 청사진 편집기를 닫습니다.
이제 레벨 편집기의 도구 모음에서 이 세계에서 방금 만든 게임 모드를 사용하려면 [세팅>월드 세팅]세계 설정 창을 엽니다.
World Settings 패널에서 Game Mode Override를 방금 만든 BP_TopdownShooterGameModeBase로 설정합니다.
완료되면 재생 버튼을 눌러 PIE 모드로 들어가면 캐릭터가 마우스 클릭 지점을 바라보며 회전하고 위치에 상관없이 자유롭게 움직이는 등 탑다운 슈터의 기본 컨트롤이 완성된 것을 확인할 수 있습니다. 당신이 찾고있는 방향.
아웃트로
이번 영상에서는 키보드로 캐릭터를 움직이고 마우스 커서 방향을 바라보며 캐릭터를 조종하는 기본적인 탑다운 슈팅 방식을 구현해봤습니다.
이 강좌는 구독자 여러분들의 응원과 시청으로 만들어졌습니다.
Ber의 게임 개발 YouTube였습니다. 감사합니다
[투네이션]
[Patreon]
WER의 GAME DEVELOP CHANNEL은 게임 메이킹 수업 영상을 제작하고 있습니다 | 패트리온
WER의 GAME DEVELOP CHANNEL의 후원자가 되십시오. 아티스트와 크리에이터를 위한 세계 최대의 멤버십 플랫폼에서 멤버십 전용 콘텐츠와 경험을 즐겨보세요.
www.patreon.com
[디스코드 채널]
Ber의 게임 개발 채널 Discord Server에 가입하세요!
Discord에서 Ber의 게임 개발 채널 커뮤니티를 확인하세요. 399명의 다른 회원과 어울리고 무료 음성 및 문자 채팅을 즐기세요.
discord.com