카테고리 없음
25.02.03 언리얼 드론만들기(상)
alwaysyoung2
2025. 2. 3. 20:57
728x90
반응형
enhanced input system 을 활용하여 드론을 만들어보려고 한다.
일반적인 캐릭터 클래스가 아닌 비행물체는 중력의 영향을 받지 않으므로 Pawn class를 사용해야한다.
gamemode와 controler의 코드들을 만들어 준 뒤
에디터에서 input action 을 생성해준다.
드론의 xy움직임을 담당해줄 DroneMove,
드론의 z움직임을 담당해줄 Moveup,
드론의 시야움직임을 담당해줄 DroneLook,
드론의 roll움직임을 담당해줄 Roll 이 필요하다.
이후 IMC 를 생성하여 각 키를 매핑해준다
그 후에 controler 코드에서 imc 를 활성화해준다.
#include "CoreMinimal.h"
#include "GameFramework/PlayerController.h"
#include "DroneController.generated.h"
class UInputMappingContext;
class UInputAction;
/**
*
*/
UCLASS()
class PRACTICE_API ADroneController : public APlayerController
{
GENERATED_BODY()
public:
ADroneController();
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Input")
UInputMappingContext* InputMappingContext;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Input")
UInputAction* DroneMoveAction;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Input")
UInputAction* DroneLookAction;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Input")
UInputAction* MoveupAction;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Input")
UInputAction* RollAction;
virtual void BeginPlay() override;
};
h파일
// Fill out your copyright notice in the Description page of Project Settings.
#include "DroneController.h"
#include "EnhancedInputSubSystems.h"
ADroneController::ADroneController()
: InputMappingContext(nullptr),
DroneMoveAction(nullptr),
DroneLookAction(nullptr),
MoveupAction(nullptr),
RollAction(nullptr)
{
}
void ADroneController::BeginPlay()
{
Super::BeginPlay();
if (ULocalPlayer* LocalPlayer = GetLocalPlayer())
{
if (UEnhancedInputLocalPlayerSubsystem* SubSystem = LocalPlayer->GetSubsystem<UEnhancedInputLocalPlayerSubsystem>())
{
if (InputMappingContext)
{
SubSystem->AddMappingContext(InputMappingContext, 0);
}
}
}
}
cpp 파일
이후 실행한 후에 컨트롤러를 상속받는 블루프린트를 사용해 확인해보면 detail패널에 변수가 추가됨을 확인할 수 있다.
728x90
반응형