Minor - Bullet Spawning Method
La méthode est quasiment finie, il reste juste un pb au niveau de l'objet/la classe à appeler.
This commit is contained in:
@@ -1,7 +1,9 @@
|
|||||||
#include "M4_PlayerPawn.h"
|
#include "M4_PlayerPawn.h"
|
||||||
#include "EnhancedInputComponent.h"
|
#include "EnhancedInputComponent.h"
|
||||||
#include "M4_Gamemode.h"
|
#include "M4_Gamemode.h"
|
||||||
|
#include "M4_Projectile.h"
|
||||||
#include "GameFramework/PlayerController.h"
|
#include "GameFramework/PlayerController.h"
|
||||||
|
#include "Kismet/KismetMathLibrary.h"
|
||||||
#include "Camera/CameraComponent.h"
|
#include "Camera/CameraComponent.h"
|
||||||
|
|
||||||
AM4_PlayerPawn::AM4_PlayerPawn()
|
AM4_PlayerPawn::AM4_PlayerPawn()
|
||||||
@@ -87,6 +89,19 @@ void AM4_PlayerPawn::Shoot(const FInputActionInstance& Inst)
|
|||||||
{
|
{
|
||||||
if (Inst.GetValue().Get<bool>() == true)
|
if (Inst.GetValue().Get<bool>() == true)
|
||||||
{
|
{
|
||||||
GEngine->AddOnScreenDebugMessage(-1, 2.f, FColor::Red, TEXT("Input Space Pressed"));
|
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, TEXT("Using the Wand!"));
|
||||||
|
UWorld* const World = GetWorld();
|
||||||
|
if (World !=nullptr && Proj != nullptr)
|
||||||
|
{
|
||||||
|
FVector TargetPosition = FVector3d(GetActorLocation().X, GetActorLocation().Y, GetActorLocation().Z);
|
||||||
|
|
||||||
|
FRotator SpawnRotation = UKismetMathLibrary::FindLookAtRotation(FVector3d(0), TargetPosition);
|
||||||
|
|
||||||
|
FActorSpawnParameters ActorSpawnParams;
|
||||||
|
ActorSpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AdjustIfPossibleButDontSpawnIfColliding;
|
||||||
|
|
||||||
|
//World->SpawnActor<AM4_Projectile>(Proj, TargetPosition, SpawnRotation, ActorSpawnParams);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -12,24 +12,14 @@ AM4_Projectile::AM4_Projectile()
|
|||||||
MeshComp-> SetRelativeScale3D(FVector(1.f, .1f,.1f));
|
MeshComp-> SetRelativeScale3D(FVector(1.f, .1f,.1f));
|
||||||
MeshComp->BodyInstance.SetCollisionProfileName(TEXT("Projectile"));
|
MeshComp->BodyInstance.SetCollisionProfileName(TEXT("Projectile"));
|
||||||
MeshComp->OnComponentHit.AddDynamic(this, &AM4_Projectile::OnHit);
|
MeshComp->OnComponentHit.AddDynamic(this, &AM4_Projectile::OnHit);
|
||||||
|
|
||||||
|
MeshComp->SetupAttachment(RootComponent);
|
||||||
|
MeshComp->SetMobility(EComponentMobility::Movable);
|
||||||
|
MeshComp->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AM4_Projectile::OnHit(UPrimitiveComponent* HitComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector Impulse, const FHitResult& Hit)
|
void AM4_Projectile::OnHit(UPrimitiveComponent* HitComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector Impulse, const FHitResult& Hit)
|
||||||
{
|
{
|
||||||
|
OtherComp->AddImpulseAtLocation(GetVelocity() * BulletSpeed, GetActorLocation());
|
||||||
}
|
Destroy();
|
||||||
|
}
|
||||||
|
|
||||||
/* Called when the game starts or when spawned
|
|
||||||
void AM4_Projectile::BeginPlay()
|
|
||||||
{
|
|
||||||
Super::BeginPlay();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Called every frame
|
|
||||||
void AM4_Projectile::Tick(float DeltaTime)
|
|
||||||
{
|
|
||||||
Super::Tick(DeltaTime);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "M4_Projectile.h"
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "GameFramework/Pawn.h"
|
#include "GameFramework/Pawn.h"
|
||||||
#include "InputAction.h"
|
#include "InputAction.h"
|
||||||
@@ -11,6 +12,7 @@ UCLASS()
|
|||||||
class AM4_PlayerPawn : public APawn
|
class AM4_PlayerPawn : public APawn
|
||||||
{
|
{
|
||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AM4_PlayerPawn();
|
AM4_PlayerPawn();
|
||||||
|
|
||||||
@@ -31,6 +33,9 @@ protected:
|
|||||||
UPROPERTY()
|
UPROPERTY()
|
||||||
UInputAction* ShootAction;
|
UInputAction* ShootAction;
|
||||||
|
|
||||||
|
UPROPERTY(VisibleAnywhere)
|
||||||
|
AM4_Projectile* Proj;
|
||||||
|
|
||||||
//bool HasShot = false;
|
//bool HasShot = false;
|
||||||
float MoveSpeed = 500.f;
|
float MoveSpeed = 500.f;
|
||||||
FVector2D MeshScale = FVector2D(0.6f, 0.5f);
|
FVector2D MeshScale = FVector2D(0.6f, 0.5f);
|
||||||
|
|||||||
@@ -22,13 +22,22 @@ class M4_CPP_API AM4_Projectile : public AActor
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
AM4_Projectile();
|
AM4_Projectile();
|
||||||
|
|
||||||
protected:
|
// Called every frame
|
||||||
float bullSpeed = 50.f;
|
//virtual void Tick(float DeltaTime) override;
|
||||||
float lifeTime = 3.f;
|
|
||||||
|
// Despawn after 5 seconds by default
|
||||||
public:
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Projectile | Lifespan")
|
||||||
|
float ProjectileLifespan = 5.0f;
|
||||||
|
|
||||||
|
// The amount of force this projectile imparts on objects it collides with
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Projectile | Physics")
|
||||||
|
float BulletSpeed = 100.0f;
|
||||||
|
|
||||||
|
// Mesh of the projectile in the world
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Projectile | Mesh")
|
||||||
|
TObjectPtr<UStaticMeshComponent> ProjectileMesh;
|
||||||
|
|
||||||
UFUNCTION()
|
UFUNCTION()
|
||||||
void OnHit(UPrimitiveComponent* HitComp, AActor* OtherActor, UPrimitiveComponent* OtherComp,FVector Impulse, const FHitResult& Hit);
|
void OnHit(UPrimitiveComponent* HitComp, AActor* OtherActor, UPrimitiveComponent* OtherComp,FVector Impulse, const FHitResult& Hit);
|
||||||
UMeshComponent* GetCollisionComp() const { return MeshComp; }
|
UMeshComponent* GetCollisionComp() const { return MeshComp; }
|
||||||
|
|||||||
Reference in New Issue
Block a user