// Fill out your copyright notice in the Description page of Project Settings. #include "Player/ExoPlayerController.h" #include "EnhancedInputComponent.h" #include "EnhancedInputSubsystems.h" #include "GameFramework/Character.h" AExoPlayerController::AExoPlayerController() { PrimaryActorTick.bCanEverTick = true; } void AExoPlayerController::BeginPlay() { Super::BeginPlay(); check(InputContext); UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem(GetLocalPlayer()); if (Subsystem) { Subsystem->AddMappingContext(InputContext, 0); } PlayerCharacter = GetPawn(); } void AExoPlayerController::PlayerTick(float DeltaTime) { Super::PlayerTick(DeltaTime); } void AExoPlayerController::SetupInputComponent() { Super::SetupInputComponent(); UEnhancedInputComponent* EnhancedInputComponent = CastChecked(InputComponent); EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this, &AExoPlayerController::Move); EnhancedInputComponent->BindAction(LookAction, ETriggerEvent::Triggered, this, &AExoPlayerController::Look); } void AExoPlayerController::Move(const FInputActionValue& InputActionValue) { const FVector2D InputAxisVector = InputActionValue.Get(); const FRotator Rotation = GetControlRotation(); const FRotator YawRotation(0.f, Rotation.Yaw, 0.f); const FVector ForwardDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X); const FVector RightDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y); if (PlayerCharacter) { PlayerCharacter->AddMovementInput(ForwardDirection, InputAxisVector.X); PlayerCharacter->AddMovementInput(RightDirection, InputAxisVector.Y); } } void AExoPlayerController::Look(const FInputActionValue& InputActionValue) { FVector2D InputAxisVector = InputActionValue.Get(); AddYawInput(InputAxisVector.X); AddPitchInput(InputAxisVector.Y); }