74 - Projectile Tracer

This commit is contained in:
Kingsmedia 2022-05-05 14:15:25 +02:00
parent a3cc71b200
commit 780a9163f1
5 changed files with 23 additions and 4 deletions

View File

@ -5,12 +5,14 @@
#include "Components/BoxComponent.h" #include "Components/BoxComponent.h"
#include "GameFramework/ProjectileMovementComponent.h" #include "GameFramework/ProjectileMovementComponent.h"
#include "Kismet/GameplayStatics.h"
AProjectile::AProjectile() AProjectile::AProjectile()
{ {
PrimaryActorTick.bCanEverTick = true; PrimaryActorTick.bCanEverTick = true;
bReplicates = true;
CollisionBox = CreateDefaultSubobject<UBoxComponent>(TEXT("CollisionBox"));\ CollisionBox = CreateDefaultSubobject<UBoxComponent>(TEXT("CollisionBox"));
SetRootComponent(CollisionBox); SetRootComponent(CollisionBox);
CollisionBox->SetCollisionObjectType(ECollisionChannel::ECC_WorldDynamic); CollisionBox->SetCollisionObjectType(ECollisionChannel::ECC_WorldDynamic);
CollisionBox->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics); CollisionBox->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
@ -25,12 +27,21 @@ AProjectile::AProjectile()
void AProjectile::BeginPlay() void AProjectile::BeginPlay()
{ {
Super::BeginPlay(); Super::BeginPlay();
if (Tracer)
{
TracerComponent = UGameplayStatics::SpawnEmitterAttached(
Tracer,
CollisionBox,
FName(),
GetActorLocation(),
GetActorRotation(),
EAttachLocation::KeepWorldPosition
);
}
} }
void AProjectile::Tick(float DeltaTime) void AProjectile::Tick(float DeltaTime)
{ {
Super::Tick(DeltaTime); Super::Tick(DeltaTime);
} }

View File

@ -4,6 +4,7 @@
#include "CoreMinimal.h" #include "CoreMinimal.h"
#include "GameFramework/Actor.h" #include "GameFramework/Actor.h"
#include "Particles/ParticleSystemComponent.h"
#include "Projectile.generated.h" #include "Projectile.generated.h"
UCLASS() UCLASS()
@ -25,4 +26,9 @@ public:
UPROPERTY(VisibleAnywhere) UPROPERTY(VisibleAnywhere)
class UProjectileMovementComponent* ProjectileMovementComponent; class UProjectileMovementComponent* ProjectileMovementComponent;
UPROPERTY(EditAnywhere)
class UParticleSystem* Tracer;
class UParticleSystemComponent* TracerComponent;
}; };

View File

@ -10,6 +10,8 @@ void AProjectileWeapon::Fire(const FVector& HitTarget)
{ {
Super::Fire(HitTarget); Super::Fire(HitTarget);
if (!HasAuthority()) return;
APawn* InstigatorPawn = Cast<APawn>(GetOwner()); APawn* InstigatorPawn = Cast<APawn>(GetOwner());
const USkeletalMeshSocket* MuzzleFlashSocket = GetWeaponMesh()->GetSocketByName(FName("MuzzleFlash")); const USkeletalMeshSocket* MuzzleFlashSocket = GetWeaponMesh()->GetSocketByName(FName("MuzzleFlash"));
if (MuzzleFlashSocket) if (MuzzleFlashSocket)