UE5/UE5 기초

UE5기초)마우스 클릭 이동

PJNull 2023. 6. 13.
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

댓글