From 8681efed44a282314a1dff8037bfe5caaa0a51c8 Mon Sep 17 00:00:00 2001 From: Kingsmedia Date: Thu, 19 May 2022 11:10:41 +0200 Subject: [PATCH] 132 - Rocket Movement Component --- .../GameModes/BP_BlasterGameMode.uasset | Bin 20607 -> 20607 bytes .../Weapon/Projectiles/BP_Rocket.uasset | Bin 31297 -> 31420 bytes Source/Blaster/Character/BlasterCharacter.cpp | 3 +++ Source/Blaster/Weapon/Projectile.cpp | 5 ----- Source/Blaster/Weapon/Projectile.h | 6 ++--- Source/Blaster/Weapon/ProjectileBullet.cpp | 8 +++++++ Source/Blaster/Weapon/ProjectileBullet.h | 4 ++++ Source/Blaster/Weapon/ProjectileRocket.cpp | 9 ++++++++ Source/Blaster/Weapon/ProjectileRocket.h | 4 ++++ .../Weapon/RocketMovementComponent.cpp | 17 ++++++++++++++ .../Blaster/Weapon/RocketMovementComponent.h | 21 ++++++++++++++++++ Source/Blaster/Weapon/Weapon.cpp | 1 + 12 files changed, 70 insertions(+), 8 deletions(-) create mode 100644 Source/Blaster/Weapon/RocketMovementComponent.cpp create mode 100644 Source/Blaster/Weapon/RocketMovementComponent.h diff --git a/Content/Blueprints/GameModes/BP_BlasterGameMode.uasset b/Content/Blueprints/GameModes/BP_BlasterGameMode.uasset index 69e1aae79363322f1fa11bfce878fdcd19fffff6..6b2bec47b0aba25576cab9bb6148a594ed0edd5c 100644 GIT binary patch delta 73 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 diff --git a/Source/Blaster/Character/BlasterCharacter.cpp b/Source/Blaster/Character/BlasterCharacter.cpp index f0f2f26..05c4f8f 100644 --- a/Source/Blaster/Character/BlasterCharacter.cpp +++ b/Source/Blaster/Character/BlasterCharacter.cpp @@ -267,6 +267,9 @@ void ABlasterCharacter::PlayReloadMontage() case EWeaponType::EWT_AssaultRifle: SectionName = FName("Rifle"); break; + case EWeaponType::EWT_RocketLauncher: + SectionName = FName("Rifle"); // Todo: create rocket reload montage section + break; } AnimInstance->Montage_JumpToSection(SectionName); diff --git a/Source/Blaster/Weapon/Projectile.cpp b/Source/Blaster/Weapon/Projectile.cpp index ed3ecfe..1c1dee7 100644 --- a/Source/Blaster/Weapon/Projectile.cpp +++ b/Source/Blaster/Weapon/Projectile.cpp @@ -4,9 +4,7 @@ #include "Projectile.h" #include "Blaster/Blaster.h" -#include "Blaster/Character/BlasterCharacter.h" #include "Components/BoxComponent.h" -#include "GameFramework/ProjectileMovementComponent.h" #include "Kismet/GameplayStatics.h" #include "Sound/SoundCue.h" @@ -23,9 +21,6 @@ AProjectile::AProjectile() CollisionBox->SetCollisionResponseToChannel(ECC_Visibility, ECR_Block); CollisionBox->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Block); CollisionBox->SetCollisionResponseToChannel(ECC_SkeletalMesh, ECR_Block); - - ProjectileMovementComponent = CreateDefaultSubobject(TEXT("ProjectileMovementComponent")); - ProjectileMovementComponent->bRotationFollowsVelocity = true; } void AProjectile::BeginPlay() diff --git a/Source/Blaster/Weapon/Projectile.h b/Source/Blaster/Weapon/Projectile.h index 3bdc169..c3f0cd3 100644 --- a/Source/Blaster/Weapon/Projectile.h +++ b/Source/Blaster/Weapon/Projectile.h @@ -35,11 +35,11 @@ protected: UPROPERTY(EditAnywhere) class UBoxComponent* CollisionBox; -private: - UPROPERTY(VisibleAnywhere) class UProjectileMovementComponent* ProjectileMovementComponent; - + +private: + UPROPERTY(EditAnywhere) class UParticleSystem* Tracer; diff --git a/Source/Blaster/Weapon/ProjectileBullet.cpp b/Source/Blaster/Weapon/ProjectileBullet.cpp index 0cb814d..74231c7 100644 --- a/Source/Blaster/Weapon/ProjectileBullet.cpp +++ b/Source/Blaster/Weapon/ProjectileBullet.cpp @@ -4,8 +4,16 @@ #include "ProjectileBullet.h" #include "GameFramework/Character.h" +#include "GameFramework/ProjectileMovementComponent.h" #include "Kismet/GameplayStatics.h" +AProjectileBullet::AProjectileBullet() +{ + ProjectileMovementComponent = CreateDefaultSubobject(TEXT("ProjectileMovementComponent")); + ProjectileMovementComponent->bRotationFollowsVelocity = true; + ProjectileMovementComponent->SetIsReplicated(true); +} + void AProjectileBullet::OnHit(UPrimitiveComponent* HitComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit) { ACharacter* OwnerCharacter = Cast(GetOwner()); diff --git a/Source/Blaster/Weapon/ProjectileBullet.h b/Source/Blaster/Weapon/ProjectileBullet.h index 8e3e8d7..1631542 100644 --- a/Source/Blaster/Weapon/ProjectileBullet.h +++ b/Source/Blaster/Weapon/ProjectileBullet.h @@ -14,6 +14,10 @@ class BLASTER_API AProjectileBullet : public AProjectile { GENERATED_BODY() +public: + + AProjectileBullet(); + protected: virtual void OnHit(UPrimitiveComponent* HitComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit) override; diff --git a/Source/Blaster/Weapon/ProjectileRocket.cpp b/Source/Blaster/Weapon/ProjectileRocket.cpp index 45c61e1..529fec1 100644 --- a/Source/Blaster/Weapon/ProjectileRocket.cpp +++ b/Source/Blaster/Weapon/ProjectileRocket.cpp @@ -6,6 +6,7 @@ #include "Kismet/GameplayStatics.h" #include "NiagaraFunctionLibrary.h" #include "NiagaraComponent.h" +#include "RocketMovementComponent.h" #include "Components/AudioComponent.h" #include "Components/BoxComponent.h" #include "Sound/SoundCue.h" @@ -15,6 +16,10 @@ AProjectileRocket::AProjectileRocket() RocketMesh = CreateDefaultSubobject(TEXT("Rocket Mesh")); RocketMesh->SetupAttachment(RootComponent); RocketMesh->SetCollisionEnabled(ECollisionEnabled::NoCollision); + + RocketMovementComponent = CreateDefaultSubobject("RocketMovementComponent"); + RocketMovementComponent->bRotationFollowsVelocity = true; + RocketMovementComponent->SetIsReplicated(true); } void AProjectileRocket::Destroyed() @@ -68,6 +73,10 @@ void AProjectileRocket::DestroyTimerFinished() void AProjectileRocket::OnHit(UPrimitiveComponent* HitComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit) { + if (OtherActor == GetOwner()) + { + return; + } APawn* FiringPawn = GetInstigator(); if (FiringPawn && HasAuthority()) { diff --git a/Source/Blaster/Weapon/ProjectileRocket.h b/Source/Blaster/Weapon/ProjectileRocket.h index 122d015..94af218 100644 --- a/Source/Blaster/Weapon/ProjectileRocket.h +++ b/Source/Blaster/Weapon/ProjectileRocket.h @@ -36,6 +36,10 @@ protected: UPROPERTY(EditAnywhere) USoundAttenuation* LoopingSoundAttenuation; + + UPROPERTY(VisibleAnywhere) + class URocketMovementComponent* RocketMovementComponent; + private: UPROPERTY(VisibleAnywhere) diff --git a/Source/Blaster/Weapon/RocketMovementComponent.cpp b/Source/Blaster/Weapon/RocketMovementComponent.cpp new file mode 100644 index 0000000..a75878f --- /dev/null +++ b/Source/Blaster/Weapon/RocketMovementComponent.cpp @@ -0,0 +1,17 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "RocketMovementComponent.h" + +UProjectileMovementComponent::EHandleBlockingHitResult URocketMovementComponent::HandleBlockingHit(const FHitResult& Hit, float TimeTick, + const FVector& MoveDelta, float& SubTickTimeRemaining) +{ + Super::HandleBlockingHit(Hit, TimeTick, MoveDelta, SubTickTimeRemaining); + + return EHandleBlockingHitResult::AdvanceNextSubstep; +} + +void URocketMovementComponent::HandleImpact(const FHitResult& Hit, float TimeSlice, const FVector& MoveDelta) +{ + // Rockets should not stop; only explode when their CollisionBox detects a hit +} diff --git a/Source/Blaster/Weapon/RocketMovementComponent.h b/Source/Blaster/Weapon/RocketMovementComponent.h new file mode 100644 index 0000000..ccf1438 --- /dev/null +++ b/Source/Blaster/Weapon/RocketMovementComponent.h @@ -0,0 +1,21 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/ProjectileMovementComponent.h" +#include "RocketMovementComponent.generated.h" + +/** + * + */ +UCLASS() +class BLASTER_API URocketMovementComponent : public UProjectileMovementComponent +{ + GENERATED_BODY() + +protected: + + virtual EHandleBlockingHitResult HandleBlockingHit(const FHitResult& Hit, float TimeTick, const FVector& MoveDelta, float& SubTickTimeRemaining) override; + virtual void HandleImpact(const FHitResult& Hit, float TimeSlice, const FVector& MoveDelta) override; +}; diff --git a/Source/Blaster/Weapon/Weapon.cpp b/Source/Blaster/Weapon/Weapon.cpp index 3550513..98cec9a 100644 --- a/Source/Blaster/Weapon/Weapon.cpp +++ b/Source/Blaster/Weapon/Weapon.cpp @@ -15,6 +15,7 @@ AWeapon::AWeapon() { PrimaryActorTick.bCanEverTick = false; bReplicates = true; + SetReplicateMovement(true); WeaponMesh = CreateDefaultSubobject(TEXT("WeaponMesh"));