And this is definitely after pressing play and clicking inside the viewport?
Could you show BP_FirstPersonPlayerController?
And the event graph and IMC_Default?
That shows that there are no mappings. It should look like this
The actions are in an aptly named folder
It’s either that or re-add the first person template.
I understood that you are erasing BP_FirstPersonPlayerController and bringing in a new BP_FirstPersonPlayerController. But I can’t think of the process of doing it, can you tell me how?
The same way you added it initially. I’ve never added something twice but presumably it’ll ask if you want to overwrite the files.
You mean the Crypt Raider lecture, right? Thank you so much for your kind reply for a long time. It helped me a lot. In addition, I wondered why IMC_Default was deleted. What kind of mistake did it make?
Sorry, I misremembered the project setup. So you could start again but I’d suggest just adding the mappings yourself. It’ll only take a few seconds.
I don’t know, sorry.
Are you saying to copy and use only one BP_FirstPersonPlayerController in the basic first person project? I don’t understand exactly what you mean by adding the mapping yourself. Sorry.
Do you have the actions?
“Do you have the actions?” What does that mean?
See my previous reply
Are you saying that you can make it yourself?
I think I’ve made an incorrect assumption.
What version are you using? Could you show your first person player character c++ code?
Use Unreal Engine 5.3.
I didn’t find the first person player character, but I found the CryptRaiderCharacter c++. I’ll attach this because it’s the same as the first person player character, or it’s only blue print.
// Copyright Epic Games, Inc. All Rights Reserved.
#include "CryptRaiderCharacter.h"
#include "CryptRaiderProjectile.h"
#include "Animation/AnimInstance.h"
#include "Camera/CameraComponent.h"
#include "Components/CapsuleComponent.h"
#include "Components/SkeletalMeshComponent.h"
#include "EnhancedInputComponent.h"
#include "EnhancedInputSubsystems.h"
#include "InputActionValue.h"
#include "Engine/LocalPlayer.h"
DEFINE_LOG_CATEGORY(LogTemplateCharacter);
//////////////////////////////////////////////////////////////////////////
// ACryptRaiderCharacter
ACryptRaiderCharacter::ACryptRaiderCharacter()
{
// Character doesnt have a rifle at start
bHasRifle = false;
// Set size for collision capsule
GetCapsuleComponent()->InitCapsuleSize(55.f, 96.0f);
// Create a CameraComponent
FirstPersonCameraComponent = CreateDefaultSubobject<UCameraComponent>(TEXT("FirstPersonCamera"));
FirstPersonCameraComponent->SetupAttachment(GetCapsuleComponent());
FirstPersonCameraComponent->SetRelativeLocation(FVector(-10.f, 0.f, 60.f)); // Position the camera
FirstPersonCameraComponent->bUsePawnControlRotation = true;
// Create a mesh component that will be used when being viewed from a '1st person' view (when controlling this pawn)
Mesh1P = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("CharacterMesh1P"));
Mesh1P->SetOnlyOwnerSee(true);
Mesh1P->SetupAttachment(FirstPersonCameraComponent);
Mesh1P->bCastDynamicShadow = false;
Mesh1P->CastShadow = false;
//Mesh1P->SetRelativeRotation(FRotator(0.9f, -19.19f, 5.2f));
Mesh1P->SetRelativeLocation(FVector(-30.f, 0.f, -150.f));
}
void ACryptRaiderCharacter::BeginPlay()
{
// Call the base class
Super::BeginPlay();
// Add Input Mapping Context
if (APlayerController* PlayerController = Cast<APlayerController>(Controller))
{
if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(PlayerController->GetLocalPlayer()))
{
Subsystem->AddMappingContext(DefaultMappingContext, 0);
}
}
}
//////////////////////////////////////////////////////////////////////////// Input
void ACryptRaiderCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
// Set up action bindings
if (UEnhancedInputComponent* EnhancedInputComponent = Cast<UEnhancedInputComponent>(PlayerInputComponent))
{
// Jumping
EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Started, this, &ACharacter::Jump);
EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Completed, this, &ACharacter::StopJumping);
// Moving
EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this, &ACryptRaiderCharacter::Move);
// Looking
EnhancedInputComponent->BindAction(LookAction, ETriggerEvent::Triggered, this, &ACryptRaiderCharacter::Look);
}
else
{
UE_LOG(LogTemplateCharacter, Error, TEXT("'%s' Failed to find an Enhanced Input Component! This template is built to use the Enhanced Input system. If you intend to use the legacy system, then you will need to update this C++ file."), *GetNameSafe(this));
}
}
void ACryptRaiderCharacter::Move(const FInputActionValue& Value)
{
// input is a Vector2D
FVector2D MovementVector = Value.Get<FVector2D>();
if (Controller != nullptr)
{
// add movement
AddMovementInput(GetActorForwardVector(), MovementVector.Y);
AddMovementInput(GetActorRightVector(), MovementVector.X);
}
}
void ACryptRaiderCharacter::Look(const FInputActionValue& Value)
{
// input is a Vector2D
FVector2D LookAxisVector = Value.Get<FVector2D>();
if (Controller != nullptr)
{
// add yaw and pitch input to controller
AddControllerYawInput(LookAxisVector.X);
AddControllerPitchInput(LookAxisVector.Y);
}
}
void ACryptRaiderCharacter::SetHasRifle(bool bNewHasRifle)
{
bHasRifle = bNewHasRifle;
}
bool ACryptRaiderCharacter::GetHasRifle()
{
return bHasRifle;
}
Ok then I didn’t, that’s how I expected it to be. Do you not have the folder mentioned above? I think you might have accidentally deleted the Input folder which contained the Input Mapping Context (IMC_Default) and actions.