From 365727aa4c5cc4ed864a6bfe4aa4d9786eb4484d Mon Sep 17 00:00:00 2001 From: NisemonoQ Date: Mon, 27 Oct 2025 11:31:52 +0100 Subject: [PATCH] =?UTF-8?q?Minor=20-=20Apparition=20du=20projectile=20dans?= =?UTF-8?q?=20la=20sc=C3=A8ne=20=C3=A0=20partir=20du=20joueur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le joueur peut enfin faire apparaître le projectile dans la scène après avoir appuyé sur la touche "Espace". Cependant le Mesh n'apparait toujours pas pour l'instant mais j'ai presque fini. --- Content/CTP/01_Level/L_Default.umap | Bin 30325 -> 30325 bytes Content/CTP/04_Mesh/SM_Projectile.uasset | Bin 0 -> 65611 bytes Content/CTP/05_Material/M_Player.uasset | Bin 12445 -> 12506 bytes Source/M4_CPP/private/M4_PlayerPawn.cpp | 33 +++++----- Source/M4_CPP/private/M4_Projectile.cpp | 73 ++++++++++++++++++----- Source/M4_CPP/public/M4_PlayerPawn.h | 6 +- Source/M4_CPP/public/M4_Projectile.h | 39 +++++------- 7 files changed, 96 insertions(+), 55 deletions(-) create mode 100644 Content/CTP/04_Mesh/SM_Projectile.uasset diff --git a/Content/CTP/01_Level/L_Default.umap b/Content/CTP/01_Level/L_Default.umap index c957fa72e4a7c495e5758a84572f01b517a9b55a..d006b8e55f0e413ce0ecdb9031886ca5d428f7bc 100644 GIT binary patch delta 89 zcmV-f0H*)->;d)c0gxFJV=K0ms1%N0LXhK&C6~~3bs-J0ED8bymW)S*vpNC_Fbgs= vEigGQGc+zRGP6%IZ4DIDe$7cjiK%2}&26b6CDPpi0001!Awndx^gn?%7Kb4W delta 89 zcmV-f0H*)->;d)c0gxFJ2Xdz|dZ7A14$KVl8haCNnKF*CED8by>EKnZvpNC_Fbgp@ vEip4LGdC_VGqX=JZ4DH)wXmJ{IQe$yI2YZ_b6TkZ0001!Awndx^gn?%KH?&v diff --git a/Content/CTP/04_Mesh/SM_Projectile.uasset b/Content/CTP/04_Mesh/SM_Projectile.uasset new file mode 100644 index 0000000000000000000000000000000000000000..62b82582d8c9b39b19dfaf0887818492d35d1314 GIT binary patch literal 65611 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�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 literal 0 HcmV?d00001 diff --git a/Content/CTP/05_Material/M_Player.uasset b/Content/CTP/05_Material/M_Player.uasset index 8e79efb1ef7d4df032a93c8388b89acbd573ece5..5b464fe92b40678814de5a7b3b2754f236f09879 100644 GIT binary patch delta 6038 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 delta 5990 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 X)@h5cCb9fAii=K)DfZwclgSetCollisionEnabled(ECollisionEnabled::QueryAndPhysics); MeshComponent->SetCollisionProfileName(UCollisionProfile::Pawn_ProfileName); MeshComponent->SetRelativeScale3D(FVector(1.0f, MeshScale.Y, MeshScale.X)); - static ConstructorHelpers::FObjectFinder DefaultMeshRef(TEXT("/Game/CTP/04_Mesh/SM_Cube.SM_Cube")); if (DefaultMeshRef.Succeeded()) @@ -85,22 +84,26 @@ void AM4_PlayerPawn::Move(const FInputActionInstance& Instance) void AM4_PlayerPawn::Shoot(const FInputActionInstance& Inst) { - if (Inst.GetValue().Get() == true) - { - GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, TEXT("Using the Wand!")); - UWorld* const World = GetWorld(); - if (!Proj && !World) + if (Proj) { - FVector TargetPosition = GetActorLocation(); - FRotator SpawnRotation = GetActorRotation(); + UWorld* World = GetWorld(); + GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Blue, TEXT("Using the Wand!")); - FActorSpawnParameters ActorSpawnParams; - ActorSpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AdjustIfPossibleButDontSpawnIfColliding; - ActorSpawnParams.Owner = this; + if (World) + { + FActorSpawnParameters SpawnParams; + SpawnParams.Owner = this; + const FVector InitialLocation = FVector(0.0f, GetActorLocation().Y, GetActorLocation().Z); - GetWorld()->SpawnActor(Proj, TargetPosition, SpawnRotation, ActorSpawnParams); + AM4_Projectile* Projectile = World->SpawnActor(Proj, InitialLocation, FRotator(), SpawnParams); + FVector LaunchDirection = FVector(0.0f, InitialLocation.Y + 1.f,InitialLocation.Z); + + if (Projectile) + { + Projectile->ShootDirection(LaunchDirection); + GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Green, TEXT("Spell Casted!")); + } + } } - - } -}; +}; diff --git a/Source/M4_CPP/private/M4_Projectile.cpp b/Source/M4_CPP/private/M4_Projectile.cpp index 1bdc24e..894a635 100644 --- a/Source/M4_CPP/private/M4_Projectile.cpp +++ b/Source/M4_CPP/private/M4_Projectile.cpp @@ -1,26 +1,71 @@ -// Fill out your copyright notice in the Description page of Project Settings. - - -#include "M4_Projectile.h" +#include "M4_Projectile.h" #include "GameFramework/ProjectileMovementComponent.h" #include "Components/MeshComponent.h" // Sets default values AM4_Projectile::AM4_Projectile() { - ProjectileMesh = CreateDefaultSubobject(TEXT("MeshComp")); - ProjectileMesh-> SetRelativeScale3D(FVector(1.f, .1f,.1f)); - ProjectileMesh->BodyInstance.SetCollisionProfileName(TEXT("Projectile")); - ProjectileMesh->OnComponentHit.AddDynamic(this, &AM4_Projectile::OnHit); - ProjectileMesh->SetupAttachment(RootComponent); - ProjectileMesh->SetMobility(EComponentMobility::Movable); - ProjectileMesh->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics); - + PrimaryActorTick.bCanEverTick = true; + if(!RootComponent) + { + RootComponent = CreateDefaultSubobject(TEXT("ProjectileSceneComponent")); + } + + if(!CollisionComp) + { + CollisionComp = CreateDefaultSubobject(TEXT("MeshComponent")); + RootComponent = CollisionComp; + } + + + if(!ProjectileMovementComponent) + { + ProjectileMovementComponent = CreateDefaultSubobject(TEXT("ProjectileMovementComponent")); + ProjectileMovementComponent->SetUpdatedComponent(CollisionComp); + ProjectileMovementComponent->InitialSpeed = 700.0f; + ProjectileMovementComponent->MaxSpeed = 700.0f; + ProjectileMovementComponent->bRotationFollowsVelocity = true; + ProjectileMovementComponent->bShouldBounce = false; + ProjectileMovementComponent->ProjectileGravityScale = 0.0f; + } + + if (!ProjectileMovementComponent) + { + ProjectileMeshComponent = CreateDefaultSubobject(TEXT("ProjectileMeshComponent")); + + static ConstructorHelpers::FObjectFinderMesh(TEXT("'/Script/Engine.StaticMesh'/Game/CTP/04_Mesh/SM_Projectile.SM_Projectile'")); + if(Mesh.Succeeded()) + { + ProjectileMeshComponent->SetStaticMesh(Mesh.Object); + } + + static ConstructorHelpers::FObjectFinderMaterial(TEXT("'/Script/Engine.Material'/Game/CTP/05_Material/M_Player.M_Player'")); + if (Material.Succeeded()) + { + ProjectileMat = UMaterialInstanceDynamic::Create(Material.Object, ProjectileMeshComponent); + } + + ProjectileMeshComponent->SetMaterial(0, ProjectileMat); + ProjectileMeshComponent->SetRelativeScale3D(FVector(.2f, .2f, .2f)); + ProjectileMeshComponent->SetupAttachment(RootComponent); + } + +} + +void AM4_Projectile::ShootDirection(const FVector& ShootDir) +{ + ProjectileMovementComponent->Velocity = ShootDir * ProjectileMovementComponent->InitialSpeed; } void AM4_Projectile::OnHit(UPrimitiveComponent* HitComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector Impulse, const FHitResult& Hit) { - OtherComp->AddImpulseAtLocation(GetVelocity() * BulletSpeed, GetActorLocation()); - Destroy(); + //OtherComp->AddImpulseAtLocation(GetVelocity() * BulletSpeed, GetActorLocation()); +} + +// Called every frame +void AM4_Projectile::Tick( float DeltaTime ) +{ + Super::Tick( DeltaTime ); + } \ No newline at end of file diff --git a/Source/M4_CPP/public/M4_PlayerPawn.h b/Source/M4_CPP/public/M4_PlayerPawn.h index a9f9be6..ebbde98 100644 --- a/Source/M4_CPP/public/M4_PlayerPawn.h +++ b/Source/M4_CPP/public/M4_PlayerPawn.h @@ -21,6 +21,9 @@ public: virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override; void Move(const FInputActionInstance& Instance); void Shoot(const FInputActionInstance& Inst); + + UPROPERTY(VisibleAnywhere) + TSubclassOf Proj = AM4_Projectile::StaticClass(); protected: @@ -32,9 +35,6 @@ protected: UPROPERTY() UInputAction* ShootAction; - - UPROPERTY(VisibleAnywhere) - TSubclassOf Proj; float MoveSpeed = 500.f; FVector2D MeshScale = FVector2D(0.6f, 0.5f); diff --git a/Source/M4_CPP/public/M4_Projectile.h b/Source/M4_CPP/public/M4_Projectile.h index bb81f33..1c5b982 100644 --- a/Source/M4_CPP/public/M4_Projectile.h +++ b/Source/M4_CPP/public/M4_Projectile.h @@ -1,4 +1,4 @@ -// Fill out your copyright notice in the Description page of Project Settings. +#include "GameFramework/ProjectileMovementComponent.h" #pragma once @@ -6,40 +6,33 @@ #include "GameFramework/Actor.h" #include "M4_Projectile.generated.h" -class UProjectileMovementComponent; class UMeshComponent; UCLASS() class M4_CPP_API AM4_Projectile : public AActor { GENERATED_BODY() - UPROPERTY(VisibleDefaultsOnly, Category = Projectile) - UMeshComponent* MeshComp; - UPROPERTY(VisibleAnywhere,BlueprintReadOnly, Category = Movement, meta = (AllowPrivateAccess = "true")) - UProjectileMovementComponent* ProjectileMovem; + UPROPERTY(VisibleAnywhere, Category = Movement) + UProjectileMovementComponent* ProjectileMovementComponent; + public: AM4_Projectile(); + + virtual void Tick( float DeltaTime ) override; + + UPROPERTY(VisibleDefaultsOnly, Category = Projectile) + UMeshComponent* CollisionComp; + + UPROPERTY(VisibleDefaultsOnly, Category = Projectile) + UStaticMeshComponent* ProjectileMeshComponent; - // Called every frame - //virtual void Tick(float DeltaTime) override; - - // Despawn after 5 seconds by default - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Projectile | Lifespan") - float ProjectileLifespan = 3.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 ProjectileMesh; + UPROPERTY(VisibleDefaultsOnly, Category = Movement) + UMaterialInstanceDynamic* ProjectileMat; - UFUNCTION() + void ShootDirection(const FVector& ShootDir); void OnHit(UPrimitiveComponent* HitComp, AActor* OtherActor, UPrimitiveComponent* OtherComp,FVector Impulse, const FHitResult& Hit); - UMeshComponent* GetCollisionComp() const { return MeshComp; } - UProjectileMovementComponent* GetMovementComp() const { return ProjectileMovem; } + };