728x90
반응형
※이전 포스팅에서는 Input관련함수들을 캐릭터에 구현했지만 Unreal에서는 Input관련 함수들은 Controller에 구현하는 것이 권장된다.
마우스 클릭이동 블루프린트
먼저 Picking을 이용하여
IMC에서 인풋을 바꾼 다음 Controller에서 인풋을 설정해준다.
마우스 클릭이동 C++
먼저 IMC의 Subsystem을 설정한후
{
Super::BeginPlay();
auto* Subsystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(GetLocalPlayer());
if (Subsystem)
{
Subsystem->AddMappingContext(InputMappingContext, 0);
}
}
바인딩해준다.
{
Super::SetupInputComponent();
UEnhancedInputComponent* EnhancedInputComponent = Cast<UEnhancedInputComponent>(InputComponent);
if (EnhancedInputComponent)
{
EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Started, this, &AR1PlayerController::IA_MOVE_Start);
EnhancedInputComponent->BindAction(TurnAction, ETriggerEvent::Completed, this, &AR1PlayerController::IA_MOVE_Complete);
}
}
void AR1PlayerController::IA_MOVE_Start(const FInputActionValue& Value)
{
bMouseActionEnabled = true;
}
void AR1PlayerController::IA_MOVE_Complete(const FInputActionValue& Value)
{
bMouseActionEnabled = false;
}
IMC바인딩이 끝나면 Picking을 통해 위치를 AddMovemnetInput에 전해준다.
if (bMouseActionEnabled==true)
{
FVector Location = GetPawn()->GetActorLocation();
FHitResult HitResult;
GetHitResultUnderCursorByChannel(ETraceTypeQuery::TraceTypeQuery1,true,OUT HitResult);
FVector MouseLocation = HitResult.Location;
FVector MoveDir = UKismetMathLibrary::GetDirectionUnitVector(Location, MouseLocation);
APawn* pawn = GetPawn();
if (pawn)
{
pawn->AddMovementInput(MoveDir);
}
}
728x90
반응형
'UE5 > UE5 기초' 카테고리의 다른 글
UE5기초)Enhanced input (0) | 2023.06.13 |
---|
댓글