평타알고리즘 최종(반복 사이클만 설정하면 끝)

This commit is contained in:
SJW1024
2023-10-15 19:25:18 +09:00
parent a201059fbb
commit f9d36a2824
5 changed files with 58 additions and 32 deletions

View File

@@ -249,6 +249,7 @@ void ADefaultPlayerController::Skill1()
if (!(GetPlayerState<ADefaultPlayerState>()->Stats[(uint8)EStats::Mana] >= GetPlayerState<ADefaultPlayerState>()->Stats[(uint8)EStats::Skill1Cost]))
return;
ACharacter* HitObject = nullptr;
FVector Location = GetPawn()->GetActorLocation();
Location.Z = 0;
@@ -268,6 +269,7 @@ void ADefaultPlayerController::Skill2()
if (!(GetPlayerState<ADefaultPlayerState>()->Stats[(uint8)EStats::Mana] >= GetPlayerState<ADefaultPlayerState>()->Stats[(uint8)EStats::Skill2Cost]))
return;
ACharacter* HitObject = nullptr;
FVector Location = GetPawn()->GetActorLocation();
Location.Z = 0;
@@ -287,6 +289,7 @@ void ADefaultPlayerController::Skill3()
if (!(GetPlayerState<ADefaultPlayerState>()->Stats[(uint8)EStats::Mana] >= GetPlayerState<ADefaultPlayerState>()->Stats[(uint8)EStats::Skill3Cost]))
return;
ACharacter* HitObject = nullptr;
FVector Location = GetPawn()->GetActorLocation();
Location.Z = 0;
@@ -306,6 +309,7 @@ void ADefaultPlayerController::Skill4Triggered()
if (!(GetPlayerState<ADefaultPlayerState>()->Stats[(uint8)EStats::Mana] >= GetPlayerState<ADefaultPlayerState>()->Stats[(uint8)EStats::Skill4Cost]))
return;
ACharacter* HitObject = nullptr;
FVector Location = GetPawn()->GetActorLocation();
Location.Z = 0;
@@ -379,12 +383,13 @@ void ADefaultPlayerController::Move()
ObjectTypes.Add(UEngineTypes::ConvertToObjectType(ECollisionChannel::ECC_WorldStatic));
ObjectTypes.Add(UEngineTypes::ConvertToObjectType(ECollisionChannel::ECC_Pawn));
GetHitResultUnderCursorForObjects(ObjectTypes, true, HitResult);
ACharacter* HitObject = Cast<ACharacter>(HitResult.GetActor());
GetHitResultUnderCursorForObjects(ObjectTypes, true, HitResult);
ACharacter* HitObject = Cast<ACharacter>(HitResult.GetActor()); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HitCharactor<6F><72> <20><><EFBFBD><EFBFBD><<<3C><><EFBFBD><EFBFBD> <20><> ij<><C4B3><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>
if (HitObject != nullptr)
if (HitObject != nullptr) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HitObject<63><74> null<6C><6C> <20>ƴ<EFBFBD> <20><><EFBFBD><EFBFBD> Attack()<29><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>, HitObject<63><74> <20><> ij<><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>
{
Attack(HitObject);
Attack(HitObject); //HitObject<63><74> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Attack <20><><EFBFBD><EFBFBD>
}
else
{
@@ -566,34 +571,55 @@ void ADefaultPlayerController::OnMoveCompleted(FAIRequestID RequestID, const FPa
void ADefaultPlayerController::Attack(ACharacter* HitObject)
{
//<2F>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
float MinDistance = 1000.0f; // <20>ּ<EFBFBD> <20>Ÿ<EFBFBD>(<28>ӽ<EFBFBD> : <20><><EFBFBD>Ŀ<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD> <20>޾ƿð<C6BF>)
float MinDistance = GetPlayerState<ADefaultPlayerState>()->Stats[(uint8)EStats:: AttackRange];
FVector Destination = HitObject->GetActorLocation(); // HitObject<63><74> <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if (FVector::Dist(Destination, GetPawn()->GetActorLocation()) <= MinDistance)
{
if ((GetPlayerState<ADefaultPlayerState>()->CooldownDuration[(uint8)CooldownType::Attack] == 0))
{
FVector Location = GetPawn()->GetActorLocation();
Location.Z = 0;
FVector Destination = HitObject->GetActorLocation(); // HitObject<63><74> <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
Server_StopMove();
Multicast_StopMove();
if (FVector::Dist(Destination, GetPawn()->GetActorLocation()) <= MinDistance)
{
FVector Location = GetPawn()->GetActorLocation();
Location.Z = 0;
Multicast_SetRotation(GetMouseHitLocation());
Server_SetRotation(GetMouseHitLocation());
Server_StopMove();
Multicast_StopMove();
UE_LOG(LogTemp, Warning, TEXT("Attack"));
GetPlayerState<ADefaultPlayerState>()->SetState(ECharacterState::Attack);
GetPlayerState<ADefaultPlayerState>()->SetAttackType(CooldownType::Attack);
}
else
{
FVector Location = GetPawn()->GetActorLocation();
Location.Z = 0;
Multicast_SetRotation(GetMouseHitLocation());
Server_SetRotation(GetMouseHitLocation());
Server_StopMove();
Multicast_StopMove();
UE_LOG(LogTemp, Warning, TEXT("Attack"));
GetPlayerState<ADefaultPlayerState>()->SetState(ECharacterState::Attack);
GetPlayerState<ADefaultPlayerState>()->SetAttackType(CooldownType::Attack);
}
else
{
GetPlayerState<ADefaultPlayerState>()->SetState(ECharacterState::Moving);
SimpleMoveToLocation(this, Destination);
this->MoveToLocation(Destination);
}
Multicast_SetRotation(GetMouseHitLocation());
Server_SetRotation(GetMouseHitLocation());
UE_LOG(LogTemp, Warning, TEXT("Attack"));
GetPlayerState<ADefaultPlayerState>()->SetState(ECharacterState::Idle);
GetPlayerState<ADefaultPlayerState>()->SetAttackType(CooldownType::Attack);
}
}
else
{
GetPlayerState<ADefaultPlayerState>()->SetState(ECharacterState::Moving);
SimpleMoveToLocation(this, Destination);
Destination = HitObject->GetActorLocation(); // HitObject<63><74> <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
this->MoveToLocation(Destination);
}
}
void ADefaultPlayerController::MoveToLocation_Implementation(FVector Location)