본문 바로가기

언리얼엔진/c++클래스 만들어보기

(9)         글쓰기    
UE5 ENHANCED Input 연습2 프로젝트를 C++로 만들고 이름을 Shooting이라고 한다. C++Class를 하나 만들고 PlayerPawn이라고 한다. VisualStudio가 열리면 프로젝트명+Build.cs를 연다. 여기서는 ShootingBuild.cs이다. PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" }); 맨 뒤에 , "EnhancedInput"를 추가해준다. 이래야 언리얼 C++에서 EnhancedInput 관련 작업을 할 수 있다. using UnrealBuildTool; public class Shooting : ModuleRules public Shooting(ReadOnlyTargetR..
EnhancedInput 연습 뉴레벨을 Basic으로 만들고 NewInput이라고 저장한다. Contents폴더 아래 Input폴더를 만들고 우클릭 Input>InputAction을 3개 만든다. 이름은 IA_Jump, IA_Look, IA_Move로 저장하는데 IA_Move, IA_Look은 Axis2D로 변경하고 Ctrl-S로 저장해 이름옆의 별표를 지운다. IA_Jump는 단순 트리거 동작이므로 변수를 Bool로 지정한다. 실제 키입력을 받아 맵핑해주는 Input Mapping Context를 만들어 이름은 IMC_Player라고 한다. 파일을 열고 디테일에ㅔ서 Mappings+를 누르고 IA_Jump를 선택후 키보드 SpaceBar를 선택해준다. Mapping+를 눌르 IA_Move를 선택해주고 WASD키를 위해 +를 눌러 4..
UE5 C++클래스 Character상속 마켓플레이스에서 Paragon을 검색후 GreyStone을 구매후. Paragon:GreyStone 프로젝트에 추가해준다. 콘텐츠드로워에 다음 Meshes폴더에 Greystone을 Ctrl-C 해 놓는다. C++ Class를 만드는데 부모 클래스는 Character로 하고 이름은 MyCharacter로 한다. MyCharacter.h를 살펴보면 MyCharacter는 Character클래스로 부터 상속 받았다. #include "CoreMinimal.h" #include "GameFramework/Character.h" #include "MyCharacter.generated.h" UCLASS() class TESTUNREALENGINE_API AMyCharacter : public ACharacter ..
MyPawn에서 키입력 받기 MyPawn은 부모 클래스를 Pawn으로 만들었다. Actor와 다른점은 코드를 보면 아래 함수가 추가되어져 있다 // Called to bind functionality to input void AMyPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) { Super::SetupPlayerInputComponent(PlayerInputComponent); } 여기에 Edit>프로젝트세팅>Inputs Tab의 InputAxis를 연결해줘야 한다. 우선 InputAxis를 만들자. MyPawn.h에 방금만든 Axis를 이벤트를 선언한다. public: void UpDown(float Value); void LeftRight(float..
UE5 GameModeBase GameMode를 연습하기 위해 프로젝트를 새로 만들어 보겠습니다. Games의 Blank템플릿을 선택합니다. 프로젝트 디테일은 C++로 하고 Starter Content를 포함시킵니다. 이름을 GameMode로 하고 Create합니다. 레벨에디터가 열리면 File>New Level을 선택하고 Base를 선택해줍니다. 컨텐트드러워를 열고 컨텐트폴더아래 Maps라는 폴더를 생성해줍니다. 뷰포트롷 돌아와 Ctrl-S를 누르면 레벨을 저장할수 있는데 방금만든 Maps폴더에 DefaultMap이라고 저장합니다. 프로젝트세팅 Maps탭에 Default Maps의 Start Map, Default Map을 방금만든 DefaultMap으로 설정해주면 에디터실행시 자동으로 로딩된다. 레벨에디터 아웃라이너 아래 Deta..
UE5 빌드 환경 설정 및 컴파일 방법 참고 https://docs.unrealengine.com/5.0/ko/build-configuration-for-unreal-engine/언리얼 5, BuildConfiguration.xml 설정 Build Configuration Configure how the engine is built. docs.unrealengine.com 라이브 코딩 컴파일 - Ctrl + Alt + F11 or Cmd : LiveCoding.Compile 입력 라이브 코딩 해제 후 빌드 - Visual Studio, Ctrl + F5 빌드 환경 설정 언리얼 5에서 c++ 코드를 한 줄만 수정해도 빌드 시간이 매우 오래 걸린다. 아래는 아무 설정도 안하고 액터(MyActor.cpp/h)를 수정하였을 때 걸린 시간과 로그이다...
언리얼 C++ StaticMesh 추가하기 앞의 예제에서 StaticMeshComponent까지 추가했지만 StaticMesh를 레벨에디터에서 추가해줘야 했습니다. 이제 이마저도 C++에서 추가해보겠습니다. AClassOnly::AClassOnly() { // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. PrimaryActorTick.bCanEverTick = true; Mesh = CreateDefaultSubobject(TEXT("MESH")); RootComponent = Mesh; ConstructorHelpers::FObjectFinder SM(TEXT("/Game/StarterConte..
언리얼 C++ StaticMesh컴포넌트 추가하기 레벨블루프린트에디터에서 인스턴스에 추가했던 스태틱메시컴포넌트를 이제 C++코드상에서 추가해 보겠습니다. ClassOnly.h 맨밑에 아래 2줄을 추가해줍니다. public: // Called every frame virtual void Tick(float DeltaTime) override; UPROPERTY(VisibleAnywhere) UStaticMeshComponent* Mesh; }; UPROPERTY(VisibleAnywhere)는 아래 변수를 리플렉션해주는겁니다. 디테일에 표시되게 해주는거죠. UStaticMeshComponent* Mesh; 컴포넌트의 주소를 담을 포인터를 하나 만들어 줍니다. ClassOnly.cpp를 열어 다음과 같이 아래 2줄을 추가해주빈다. AClassOnly::AC..
C++ 퀵스타트 - 액터움직이기 SetActorLocation() 1 - 필수 프로젝트 구성 런처에서 언리얼 엔진 을 엽니다. 새 프로젝트를 생성하기 가 나타납니다. 새 프로젝트 탭을 클릭한 다음 C++ 탭을 선택합니다. 거기서 기본 코드 를 선택하여 깨끗한 시작점을 확보하고, "시작용 콘텐츠 포함" 설정되었는지 확인합니다. 프로젝트 이름을 지어줘야 하는데, 여기서는 "inflearn" 라 하겠습니다. 이제 프로젝트 생성 을 클릭하여 시작하면 됩니다. 이제 언리얼 에디터 가 새 프로젝트를 열 것입니다. Visual Studio 역시 프로젝트가 만든 솔루션 파일을 열어 로드할 것입니다. 2 - C++ 클래스 생성 언리얼 에디터 에서 File (파일) 드롭다운 메뉴의 New C++ Class... (새 C++ 클래스...) 명령으로 새 클래스를 만들 수 있습니다. 부모를 ..