71 - The Hit Target
This commit is contained in:
parent
87c38977c9
commit
53a50536f1
Binary file not shown.
|
@ -20,7 +20,7 @@ ABlasterCharacter::ABlasterCharacter()
|
||||||
|
|
||||||
CameraBoom = CreateDefaultSubobject<USpringArmComponent>(TEXT("CameraBoom"));
|
CameraBoom = CreateDefaultSubobject<USpringArmComponent>(TEXT("CameraBoom"));
|
||||||
CameraBoom->SetupAttachment(GetMesh());
|
CameraBoom->SetupAttachment(GetMesh());
|
||||||
CameraBoom->TargetArmLength = 600.f;
|
CameraBoom->TargetArmLength = 350.f;
|
||||||
CameraBoom->bUsePawnControlRotation = true;
|
CameraBoom->bUsePawnControlRotation = true;
|
||||||
|
|
||||||
FollowCamera = CreateDefaultSubobject<UCameraComponent>(TEXT("FollowCamera"));
|
FollowCamera = CreateDefaultSubobject<UCameraComponent>(TEXT("FollowCamera"));
|
||||||
|
|
|
@ -7,11 +7,12 @@
|
||||||
#include "Blaster/Weapon/Weapon.h"
|
#include "Blaster/Weapon/Weapon.h"
|
||||||
#include "Engine/SkeletalMeshSocket.h"
|
#include "Engine/SkeletalMeshSocket.h"
|
||||||
#include "GameFramework/CharacterMovementComponent.h"
|
#include "GameFramework/CharacterMovementComponent.h"
|
||||||
|
#include "Kismet/GameplayStatics.h"
|
||||||
#include "Net/UnrealNetwork.h"
|
#include "Net/UnrealNetwork.h"
|
||||||
|
|
||||||
UCombatComponent::UCombatComponent()
|
UCombatComponent::UCombatComponent()
|
||||||
{
|
{
|
||||||
PrimaryComponentTick.bCanEverTick = false;
|
PrimaryComponentTick.bCanEverTick = true;
|
||||||
|
|
||||||
BaseWalkSpeed = 600.f;
|
BaseWalkSpeed = 600.f;
|
||||||
AimWalkSpeed = 350.f;
|
AimWalkSpeed = 350.f;
|
||||||
|
@ -73,6 +74,52 @@ void UCombatComponent::FireButtonPressed(bool bPressed)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UCombatComponent::TraceUnderCrosshairs(FHitResult& TraceHitResult)
|
||||||
|
{
|
||||||
|
FVector2d ViewPortSize;
|
||||||
|
if (GEngine && GEngine->GameViewport)
|
||||||
|
{
|
||||||
|
GEngine->GameViewport->GetViewportSize(ViewPortSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
FVector2d CrosshairLocation(ViewPortSize.X / 2.f, ViewPortSize.Y / 2.0f);
|
||||||
|
FVector CrosshairWorldPosition;
|
||||||
|
FVector CrosshairWorldDirection;
|
||||||
|
bool bScreenToWorld = UGameplayStatics::DeprojectScreenToWorld(
|
||||||
|
UGameplayStatics::GetPlayerController(this, 0),
|
||||||
|
CrosshairLocation,
|
||||||
|
CrosshairWorldPosition,
|
||||||
|
CrosshairWorldDirection
|
||||||
|
);
|
||||||
|
|
||||||
|
if (bScreenToWorld)
|
||||||
|
{
|
||||||
|
FVector Start = CrosshairWorldPosition;
|
||||||
|
FVector End = Start + CrosshairWorldDirection * TRACE_LENGTH;
|
||||||
|
|
||||||
|
GetWorld()->LineTraceSingleByChannel(
|
||||||
|
TraceHitResult,
|
||||||
|
Start,
|
||||||
|
End,
|
||||||
|
ECollisionChannel::ECC_Visibility
|
||||||
|
);
|
||||||
|
if (!TraceHitResult.bBlockingHit)
|
||||||
|
{
|
||||||
|
TraceHitResult.ImpactPoint = End;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DrawDebugSphere(
|
||||||
|
GetWorld(),
|
||||||
|
TraceHitResult.ImpactPoint,
|
||||||
|
12.f,
|
||||||
|
12,
|
||||||
|
FColor::Red
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void UCombatComponent::ServerFire_Implementation()
|
void UCombatComponent::ServerFire_Implementation()
|
||||||
{
|
{
|
||||||
MulticastFire();
|
MulticastFire();
|
||||||
|
@ -92,6 +139,8 @@ void UCombatComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActo
|
||||||
{
|
{
|
||||||
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
|
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
|
||||||
|
|
||||||
|
FHitResult HitResult;
|
||||||
|
TraceUnderCrosshairs(HitResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UCombatComponent::EquipWeapon(AWeapon* WeaponToEquip)
|
void UCombatComponent::EquipWeapon(AWeapon* WeaponToEquip)
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
#include "Components/ActorComponent.h"
|
#include "Components/ActorComponent.h"
|
||||||
#include "CombatComponent.generated.h"
|
#include "CombatComponent.generated.h"
|
||||||
|
|
||||||
|
#define TRACE_LENGTH 80000
|
||||||
|
|
||||||
UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
|
UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
|
||||||
class BLASTER_API UCombatComponent : public UActorComponent
|
class BLASTER_API UCombatComponent : public UActorComponent
|
||||||
|
@ -38,6 +39,8 @@ protected:
|
||||||
|
|
||||||
UFUNCTION(NetMulticast, Reliable)
|
UFUNCTION(NetMulticast, Reliable)
|
||||||
void MulticastFire();
|
void MulticastFire();
|
||||||
|
|
||||||
|
void TraceUnderCrosshairs(FHitResult& TraceHitResult);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
class ABlasterCharacter* Character;
|
class ABlasterCharacter* Character;
|
||||||
|
|
Loading…
Reference in New Issue