Create TankPlayerCharacter
This commit is contained in:
parent
cec5f2e90d
commit
eb3f255098
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,74 @@
|
|||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
|
||||
#include "TankPlayerCharacter.h"
|
||||
|
||||
#include "TankPlayerController.h"
|
||||
#include "EnhancedInputComponent.h"
|
||||
#include "EnhancedInputSubsystems.h"
|
||||
#include "InputMappingContext.h"
|
||||
|
||||
// Sets default values
|
||||
ATankPlayerCharacter::ATankPlayerCharacter()
|
||||
{
|
||||
// Set this character to call Tick() every frame. You can turn this off to improve performance if you don't need it.
|
||||
PrimaryActorTick.bCanEverTick = true;
|
||||
|
||||
}
|
||||
|
||||
// Called when the game starts or when spawned
|
||||
void ATankPlayerCharacter::BeginPlay()
|
||||
{
|
||||
Super::BeginPlay();
|
||||
|
||||
}
|
||||
|
||||
// Called every frame
|
||||
void ATankPlayerCharacter::Tick(float DeltaTime)
|
||||
{
|
||||
Super::Tick(DeltaTime);
|
||||
|
||||
}
|
||||
|
||||
// Called to bind functionality to input
|
||||
void ATankPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
|
||||
{
|
||||
Super::SetupPlayerInputComponent(PlayerInputComponent);
|
||||
|
||||
if (ATankPlayerController* TankPlayerController = Cast<ATankPlayerController>(GetController()))
|
||||
{
|
||||
if (UEnhancedInputLocalPlayerSubsystem* InputSystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(TankPlayerController->GetLocalPlayer()))
|
||||
{
|
||||
if (!InputMappingContext.IsNull())
|
||||
{
|
||||
InputSystem->AddMappingContext(InputMappingContext.LoadSynchronous(), 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (UEnhancedInputComponent* Input = Cast<UEnhancedInputComponent>(PlayerInputComponent))
|
||||
{
|
||||
if (MovementAction)
|
||||
{
|
||||
Input->BindAction(MovementAction, ETriggerEvent::Triggered, this, &ATankPlayerCharacter::MovementCallback);
|
||||
}
|
||||
|
||||
if (YawAction)
|
||||
{
|
||||
Input->BindAction(YawAction, ETriggerEvent::Triggered, this, &ATankPlayerCharacter::RotationCallback);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ATankPlayerCharacter::MovementCallback(const FInputActionInstance& Instance)
|
||||
{
|
||||
float Movement = Instance.GetValue().Get<float>();
|
||||
AddMovementInput(GetActorForwardVector(), Movement);
|
||||
}
|
||||
|
||||
void ATankPlayerCharacter::RotationCallback(const FInputActionInstance& Instance)
|
||||
{
|
||||
float Rotation = Instance.GetValue().Get<float>();
|
||||
AddControllerYawInput(Rotation);
|
||||
}
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "GameFramework/Character.h"
|
||||
#include "TankPlayerCharacter.generated.h"
|
||||
|
||||
class UInputMappingContext;
|
||||
class UInputAction;
|
||||
|
||||
UCLASS()
|
||||
class TANK_API ATankPlayerCharacter : public ACharacter
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
|
||||
public:
|
||||
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
|
||||
TSoftObjectPtr<UInputMappingContext> InputMappingContext;
|
||||
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
|
||||
UInputAction* MovementAction;
|
||||
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
|
||||
UInputAction* YawAction;
|
||||
|
||||
public:
|
||||
// Sets default values for this character's properties
|
||||
ATankPlayerCharacter();
|
||||
|
||||
protected:
|
||||
// Called when the game starts or when spawned
|
||||
virtual void BeginPlay() override;
|
||||
|
||||
public:
|
||||
// Called every frame
|
||||
virtual void Tick(float DeltaTime) override;
|
||||
|
||||
// Called to bind functionality to input
|
||||
virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;
|
||||
|
||||
private:
|
||||
|
||||
UFUNCTION()
|
||||
void MovementCallback(const FInputActionInstance& Instance);
|
||||
|
||||
UFUNCTION()
|
||||
void RotationCallback(const FInputActionInstance& Instance);
|
||||
|
||||
};
|
Loading…
Reference in New Issue