74 - Projectile Tracer
This commit is contained in:
parent
a3cc71b200
commit
780a9163f1
Binary file not shown.
Binary file not shown.
|
@ -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);
|
||||||
|
@ -26,11 +28,20 @@ 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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue