// Fill out your copyright notice in the Description page of Project Settings. #include "Projectile.h" #include "Components/BoxComponent.h" #include "GameFramework/ProjectileMovementComponent.h" #include "Kismet/GameplayStatics.h" AProjectile::AProjectile() { PrimaryActorTick.bCanEverTick = true; bReplicates = true; CollisionBox = CreateDefaultSubobject(TEXT("CollisionBox")); SetRootComponent(CollisionBox); CollisionBox->SetCollisionObjectType(ECollisionChannel::ECC_WorldDynamic); CollisionBox->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics); CollisionBox->SetCollisionResponseToChannels(ECollisionResponse::ECR_Ignore); CollisionBox->SetCollisionResponseToChannel(ECollisionChannel::ECC_Visibility, ECollisionResponse::ECR_Block); CollisionBox->SetCollisionResponseToChannel(ECollisionChannel::ECC_WorldStatic, ECollisionResponse::ECR_Block); ProjectileMovementComponent = CreateDefaultSubobject(TEXT("ProjectileMovementComponent")); ProjectileMovementComponent->bRotationFollowsVelocity = true; } void AProjectile::BeginPlay() { Super::BeginPlay(); if (Tracer) { TracerComponent = UGameplayStatics::SpawnEmitterAttached( Tracer, CollisionBox, FName(), GetActorLocation(), GetActorRotation(), EAttachLocation::KeepWorldPosition ); } } void AProjectile::Tick(float DeltaTime) { Super::Tick(DeltaTime); }