highlight enemies
This commit is contained in:
parent
16eddc8849
commit
adfe961cef
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -5,8 +5,10 @@
|
|||||||
|
|
||||||
void AAuraEnemy::HighlightActor()
|
void AAuraEnemy::HighlightActor()
|
||||||
{
|
{
|
||||||
|
bHighlighted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AAuraEnemy::UnHighlightActor()
|
void AAuraEnemy::UnHighlightActor()
|
||||||
{
|
{
|
||||||
|
bHighlighted = false;
|
||||||
}
|
}
|
||||||
|
@ -5,12 +5,75 @@
|
|||||||
|
|
||||||
#include "EnhancedInputSubsystems.h"
|
#include "EnhancedInputSubsystems.h"
|
||||||
#include "EnhancedInputComponent.h"
|
#include "EnhancedInputComponent.h"
|
||||||
|
#include "Interaction/EnemyInterface.h"
|
||||||
|
|
||||||
AAuraPlayerController::AAuraPlayerController()
|
AAuraPlayerController::AAuraPlayerController()
|
||||||
{
|
{
|
||||||
bReplicates = true;
|
bReplicates = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AAuraPlayerController::PlayerTick(float DeltaTime)
|
||||||
|
{
|
||||||
|
Super::PlayerTick(DeltaTime);
|
||||||
|
|
||||||
|
CursorTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
void AAuraPlayerController::CursorTrace()
|
||||||
|
{
|
||||||
|
FHitResult CursorHit;
|
||||||
|
GetHitResultUnderCursor(ECC_Visibility, false, CursorHit);
|
||||||
|
if (!CursorHit.bBlockingHit)
|
||||||
|
return;
|
||||||
|
|
||||||
|
LastActor = ThisActor;
|
||||||
|
ThisActor = CursorHit.GetActor();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Line tracer from cursor. There are several scenarios:
|
||||||
|
* A. LastActor is null && ThisActor is null
|
||||||
|
* - Do nothing.
|
||||||
|
* B. LastActor is null && ThisActor is valid
|
||||||
|
* - Highlight ThisActor.
|
||||||
|
* C. LastActor is valid && ThisActor is null
|
||||||
|
* - UnHighlight LastActor
|
||||||
|
* D. Both actors are valid, but LastActor != ThisActor
|
||||||
|
* - UnHighlight LastActor.
|
||||||
|
* - Highlight ThisActor.
|
||||||
|
* E. Both actors are valid, and are the same actor
|
||||||
|
* - Do nothing.
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!LastActor)
|
||||||
|
{
|
||||||
|
if (ThisActor)
|
||||||
|
{
|
||||||
|
// Case B
|
||||||
|
ThisActor->HighlightActor();
|
||||||
|
}
|
||||||
|
// else Case A
|
||||||
|
}
|
||||||
|
else // LastActor is valid
|
||||||
|
{
|
||||||
|
if (!ThisActor)
|
||||||
|
{
|
||||||
|
// Case C
|
||||||
|
LastActor->UnHighlightActor();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Both Actors are valid
|
||||||
|
if (LastActor != ThisActor)
|
||||||
|
{
|
||||||
|
// Case D
|
||||||
|
LastActor->UnHighlightActor();
|
||||||
|
ThisActor->HighlightActor();
|
||||||
|
}
|
||||||
|
// else do nothing
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void AAuraPlayerController::BeginPlay()
|
void AAuraPlayerController::BeginPlay()
|
||||||
{
|
{
|
||||||
Super::BeginPlay();
|
Super::BeginPlay();
|
||||||
@ -52,4 +115,4 @@ void AAuraPlayerController::Move(const FInputActionValue& InputActionValue)
|
|||||||
|
|
||||||
ControlledPawn->AddMovementInput(ForwardDirection, InputAxisVector.Y);
|
ControlledPawn->AddMovementInput(ForwardDirection, InputAxisVector.Y);
|
||||||
ControlledPawn->AddMovementInput(RightDirection, InputAxisVector.X);
|
ControlledPawn->AddMovementInput(RightDirection, InputAxisVector.X);
|
||||||
}
|
}
|
@ -18,4 +18,7 @@ class AURA_API AAuraEnemy : public AAuraCharacterBase, public IEnemyInterface
|
|||||||
public:
|
public:
|
||||||
virtual void HighlightActor() override;
|
virtual void HighlightActor() override;
|
||||||
virtual void UnHighlightActor() override;
|
virtual void UnHighlightActor() override;
|
||||||
|
|
||||||
|
UPROPERTY (BlueprintReadOnly)
|
||||||
|
bool bHighlighted = false;
|
||||||
};
|
};
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
class UInputMappingContext;
|
class UInputMappingContext;
|
||||||
class UInputAction;
|
class UInputAction;
|
||||||
|
|
||||||
|
class IEnemyInterface;
|
||||||
|
|
||||||
struct FInputActionValue;
|
struct FInputActionValue;
|
||||||
|
|
||||||
UCLASS()
|
UCLASS()
|
||||||
@ -18,6 +20,7 @@ class AURA_API AAuraPlayerController : public APlayerController
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
AAuraPlayerController ();
|
AAuraPlayerController ();
|
||||||
|
virtual void PlayerTick(float DeltaTime) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void BeginPlay() override;
|
virtual void BeginPlay() override;
|
||||||
@ -31,4 +34,10 @@ private:
|
|||||||
TObjectPtr<UInputAction> MoveAction;
|
TObjectPtr<UInputAction> MoveAction;
|
||||||
|
|
||||||
void Move (const FInputActionValue &InputActionValue);
|
void Move (const FInputActionValue &InputActionValue);
|
||||||
|
|
||||||
|
void CursorTrace ();
|
||||||
|
|
||||||
|
// for highlighting
|
||||||
|
TScriptInterface<IEnemyInterface> LastActor; // TScriptInterface must be used to hold interfaces
|
||||||
|
TScriptInterface<IEnemyInterface> ThisActor;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user