회전방향 동기화

This commit is contained in:
2023-10-07 20:13:01 +09:00
parent df7878c687
commit 326ae353d3
7 changed files with 74 additions and 156 deletions

View File

@@ -133,7 +133,7 @@ FString ADeathmatch::InitNewPlayer(APlayerController* NewPlayerController, const
//DebugPerpose
if (Type == CharacterType::Lukriel)
{
Type = CharacterType::Allium;
Type = CharacterType::Lb;
}
if (Team == TeamType::Null)
{

View File

@@ -89,47 +89,6 @@ public:
UFUNCTION(NetMulticast, Reliable)
void NetMulticast_Skill7();
float GetHealth() const { return Health; }
float GetHPRegeneration() const { return HPRegeneration; }
float GetHealAndShieldpower() const { return HealAndShieldpower; }
float GetArmor() const { return Armor; }
float GetMagicResistance() const { return MagicResistance; }
float GetTenacity() const { return Tenacity; }
float GetSlowRisist() const { return SlowRisist; }
float GetAttackSpeed() const { return AttackSpeed; }
float GetAttackDamage() const { return AttackDamage; }
float GetAbilityPower() const { return AbilityPower; }
float GetCriticalStrikeChance() const { return CriticalStrikeChance; }
float GetCriticalStrikeDamage() const { return CriticalStrikeDamage; }
float GetArmorPenetration() const { return ArmorPenetration; }
float GetMagicPenetration() const { return MagicPenetration; }
float GetLifeSteal() const { return LifeSteal; }
float GetPhysicalVamp() const { return PhysicalVamp; }
float GetOmnivamp() const { return Omnivamp; }
float GetAbilityHaste() const { return AbilityHaste; }
const float* GetCooldownDuration() const { return CooldownDuration; }
float GetMana() const { return Mana; }
float GetManaRegeneration() const { return ManaRegeneration; }
float GetEnergy() const { return Energy; }
float GetEnergyRegeneration() const { return EnergyRegeneration; }
float GetAttackRange() const { return AttackRange; }
float GetMovementSpeed() const { return MovementSpeed; }
float GetGoldGeneration() const { return GoldGeneration; }
float GetAttackDamageGrowth() const { return AttackDamageGrowth; }
float GetAttackSpeedGrowth() const { return AttackSpeedGrowth; }
float GetArmorGrowth() const { return ArmorGrowth; }
float GetMagicResistanceGrowth() const { return MagicResistanceGrowth; }
float GetHealthGrowth() const { return HealthGrowth; }
float GetHealthRegenerationGrowth() const { return HealthRegenerationGrowth; }
float GetManaGrowth() const { return ManaGrowth; }
float GetManaRegenerationGrowth() const { return ManaRegenerationGrowth; }
protected:
UPROPERTY(EditAnywhere)
USpringArmComponent* CameraSpringArm;
UPROPERTY(EditAnywhere)
UCameraComponent* Camera;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Defensive")
float Health;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Defensive")
@@ -206,4 +165,10 @@ protected:
float ManaGrowth;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Increasing Statistics")
float ManaRegenerationGrowth;
protected:
UPROPERTY(EditAnywhere)
USpringArmComponent* CameraSpringArm;
UPROPERTY(EditAnywhere)
UCameraComponent* Camera;
};

View File

@@ -221,13 +221,13 @@ void ADefaultPlayerController::SetupInputComponent()
EnhancedInputComponent->BindAction(Skill2Action.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::Skill2);
EnhancedInputComponent->BindAction(Skill3Action.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::Skill3);
EnhancedInputComponent->BindAction(Skill4Action.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::Skill4);
EnhancedInputComponent->BindAction(Skill4Action.Get(), ETriggerEvent::Completed, this, &ADefaultPlayerController::Skill4);
EnhancedInputComponent->BindAction(RuneSpell1Action.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::RuneSpell1);
EnhancedInputComponent->BindAction(RuneSpell2Action.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::RuneSpell2);
EnhancedInputComponent->BindAction(WardAction.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::Ward);
EnhancedInputComponent->BindAction(BombAction.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::Bomb);
EnhancedInputComponent->BindAction(ObjectSelectAction.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::ObjectSelect);
EnhancedInputComponent->BindAction(MoveAction.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::MoveTriggered);
EnhancedInputComponent->BindAction(MoveAction.Get(), ETriggerEvent::Started, this, &ADefaultPlayerController::MoveStarted);
EnhancedInputComponent->BindAction(MoveAction.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::Move);
}
}
@@ -236,13 +236,7 @@ void ADefaultPlayerController::Skill1()
//if (!(GetPlayerState<ADefaultPlayerState>()->Stats.Mana >= 100))
// return;
FVector Location = GetPawn()->GetActorLocation();
Location.Z = 0;
SimpleMoveToLocation(this, Location);
this->MoveToLocation(Location);
GetPawn()->SetActorRotation((GetMouseHitLocation() - Location).Rotation());
Server_SetRotation(GetMouseHitLocation());
UE_LOG(LogTemp, Warning, TEXT("Skill1"));
GetPlayerState<ADefaultPlayerState>()->SetState(ECharacterState::Attack);
@@ -251,13 +245,7 @@ void ADefaultPlayerController::Skill1()
void ADefaultPlayerController::Skill2()
{
FVector Location = GetPawn()->GetActorLocation();
Location.Z = 0;
SimpleMoveToLocation(this, Location);
this->MoveToLocation(Location);
GetPawn()->SetActorRotation((GetMouseHitLocation() - Location).Rotation());
Server_SetRotation(GetMouseHitLocation());
UE_LOG(LogTemp, Warning, TEXT("Skill2"));
GetPlayerState<ADefaultPlayerState>()->SetState(ECharacterState::Attack);
@@ -266,30 +254,18 @@ void ADefaultPlayerController::Skill2()
void ADefaultPlayerController::Skill3()
{
FVector Location = GetPawn()->GetActorLocation();
Location.Z = 0;
SimpleMoveToLocation(this, Location);
this->MoveToLocation(Location);
GetPawn()->SetActorRotation((GetMouseHitLocation() - Location).Rotation());
Server_SetRotation(GetMouseHitLocation());
UE_LOG(LogTemp, Warning, TEXT("Skill3"));
GetPlayerState<ADefaultPlayerState>()->SetState(ECharacterState::Attack);
GetPlayerState<ADefaultPlayerState>()->SetAttackType(CooldownType::Skill3);
}
void ADefaultPlayerController::Skill4()
void ADefaultPlayerController::Skill4(const FInputActionValue& Value)
{
FVector Location = GetPawn()->GetActorLocation();
Location.Z = 0;
Server_SetRotation(GetMouseHitLocation());
SimpleMoveToLocation(this, Location);
this->MoveToLocation(Location);
GetPawn()->SetActorRotation((GetMouseHitLocation() - Location).Rotation());
UE_LOG(LogTemp, Warning, TEXT("Skill4"));
UE_LOG(LogTemp, Warning, TEXT("Skill4 %x"), Value);
GetPlayerState<ADefaultPlayerState>()->SetState(ECharacterState::Attack);
GetPlayerState<ADefaultPlayerState>()->SetAttackType(CooldownType::Skill4Started);
}
@@ -338,16 +314,6 @@ void ADefaultPlayerController::ObjectSelect()
}
}
void ADefaultPlayerController::MoveTriggered()
{
Move();
}
void ADefaultPlayerController::MoveStarted()
{
Move();
}
void ADefaultPlayerController::Move()
{
FVector Destination = GetMouseHitLocation();
@@ -357,13 +323,29 @@ void ADefaultPlayerController::Move()
this->MoveToLocation(Destination);
}
void ADefaultPlayerController::Multicast_SetRotation_Implementation(FVector MouseHitLocation)
{
FVector Location = GetPawn()->GetActorLocation();
Location.Z = 0;
SimpleMoveToLocation(this, Location);
this->MoveToLocation(Location);
GetPawn()->SetActorRotation((MouseHitLocation - Location).Rotation());
}
void ADefaultPlayerController::Server_SetRotation_Implementation(FVector MouseHitLocation)
{
Multicast_SetRotation(MouseHitLocation);
}
FVector ADefaultPlayerController::GetMouseHitLocation()
{
FHitResult HitResult;
GetHitResultUnderCursor(ECollisionChannel::ECC_Visibility, true, HitResult);
HitResult.Location.Z = 0;
UE_LOG(LogTemp, Warning, TEXT("Client%d MoveTo : (%f, %f)"), GPlayInEditorID, HitResult.Location.X, HitResult.Location.Y);
//UE_LOG(LogTemp, Warning, TEXT("Client%d MoveTo : (%f, %f)"), GPlayInEditorID, HitResult.Location.X, HitResult.Location.Y);
FVector ActorLocation = GetPawn()->GetActorLocation();
ActorLocation.Z = 0;

View File

@@ -34,19 +34,23 @@ public:
void Skill1();
void Skill2();
void Skill3();
void Skill4();
void Skill4(const FInputActionValue& Value);
void RuneSpell1();
void RuneSpell2();
void Ward();
void Bomb();
void ObjectSelect();
void MoveTriggered();
void MoveStarted();
void Move();
UFUNCTION(Server, Reliable)
void MoveToLocation(FVector Location);
UFUNCTION(NetMulticast, Reliable)
void Multicast_SetRotation(FVector MouseHitLocation);
UFUNCTION(Server, Reliable)
void Server_SetRotation(FVector MouseHitLocation);
FVector GetMouseHitLocation();
UFUNCTION(BlueprintCallable, Category = "AI|Navigation")

View File

@@ -6,6 +6,7 @@ ADefaultPlayerState::ADefaultPlayerState()
CharacterBPRef = nullptr;;
Team = TeamType::Null;
State = ECharacterState::Idle;
InitPlayerStats();
}
void ADefaultPlayerState::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
@@ -30,42 +31,42 @@ void ADefaultPlayerState::InitPlayerStats()
{
ADefaultPlayerCharacter* Initializer = Cast<ADefaultPlayerCharacter>(CharacterBPRef);
Stats.Health = Initializer->GetHealth();
Stats.HPRegeneration = Initializer->GetHPRegeneration();
Stats.HealAndShieldpower = Initializer->GetHealAndShieldpower();
Stats.Armor = Initializer->GetArmor();
Stats.MagicResistance = Initializer->GetMagicResistance();
Stats.Tenacity = Initializer->GetTenacity();
Stats.SlowRisist = Initializer->GetSlowRisist();
Stats.AttackSpeed = Initializer->GetAttackSpeed();
Stats.AttackDamage = Initializer->GetAttackDamage();
Stats.AbilityPower = Initializer->GetAbilityPower();
Stats.CriticalStrikeChance = Initializer->GetCriticalStrikeChance();
Stats.CriticalStrikeDamage = Initializer->GetCriticalStrikeDamage();
Stats.ArmorPenetration = Initializer->GetArmorPenetration();
Stats.MagicPenetration = Initializer->GetMagicPenetration();
Stats.LifeSteal = Initializer->GetLifeSteal();
Stats.PhysicalVamp = Initializer->GetPhysicalVamp();
Stats.Omnivamp = Initializer->GetOmnivamp();
Stats.AbilityHaste = Initializer->GetAbilityHaste();
Stats.Health = Initializer->Health;
Stats.HPRegeneration = Initializer->HPRegeneration;
Stats.HealAndShieldpower = Initializer->HealAndShieldpower;
Stats.Armor = Initializer->Armor;
Stats.MagicResistance = Initializer->MagicResistance;
Stats.Tenacity = Initializer->Tenacity;
Stats.SlowRisist = Initializer->SlowRisist;
Stats.AttackSpeed = Initializer->AttackSpeed;
Stats.AttackDamage = Initializer->AttackDamage;
Stats.AbilityPower = Initializer->AbilityPower;
Stats.CriticalStrikeChance = Initializer->CriticalStrikeChance;
Stats.CriticalStrikeDamage = Initializer->CriticalStrikeDamage;
Stats.ArmorPenetration = Initializer->ArmorPenetration;
Stats.MagicPenetration = Initializer->MagicPenetration;
Stats.LifeSteal = Initializer->LifeSteal;
Stats.PhysicalVamp = Initializer->PhysicalVamp;
Stats.Omnivamp = Initializer->Omnivamp;
Stats.AbilityHaste = Initializer->AbilityHaste;
SetMultipleCooldownDuration(Initializer->GetCooldownDuration());
SetMultipleCooldownDuration(Initializer->CooldownDuration);
Stats.Mana = Initializer->GetMana();
Stats.ManaRegeneration = Initializer->GetManaRegeneration();
Stats.Energy = Initializer->GetEnergy();
Stats.EnergyRegeneration = Initializer->GetEnergyRegeneration();
Stats.AttackRange = Initializer->GetAttackRange();
Stats.MovementSpeed = Initializer->GetMovementSpeed();
Stats.GoldGeneration = Initializer->GetGoldGeneration();
Stats.AttackDamageGrowth = Initializer->GetAttackDamageGrowth();
Stats.AttackSpeedGrowth = Initializer->GetAttackSpeedGrowth();
Stats.ArmorGrowth = Initializer->GetArmorGrowth();
Stats.MagicResistanceGrowth = Initializer->GetMagicResistanceGrowth();
Stats.HealthGrowth = Initializer->GetHealthGrowth();
Stats.HealthRegenerationGrowth = Initializer->GetHealthRegenerationGrowth();
Stats.ManaGrowth = Initializer->GetManaGrowth();
Stats.ManaRegenerationGrowth = Initializer->GetManaRegenerationGrowth();
Stats.Mana = Initializer->Mana;
Stats.ManaRegeneration = Initializer->ManaRegeneration;
Stats.Energy = Initializer->Energy;
Stats.EnergyRegeneration = Initializer->EnergyRegeneration;
Stats.AttackRange = Initializer->AttackRange;
Stats.MovementSpeed = Initializer->MovementSpeed;
Stats.GoldGeneration = Initializer->GoldGeneration;
Stats.AttackDamageGrowth = Initializer->AttackDamageGrowth;
Stats.AttackSpeedGrowth = Initializer->AttackSpeedGrowth;
Stats.ArmorGrowth = Initializer->ArmorGrowth;
Stats.MagicResistanceGrowth = Initializer->MagicResistanceGrowth;
Stats.HealthGrowth = Initializer->HealthGrowth;
Stats.HealthRegenerationGrowth = Initializer->HealthRegenerationGrowth;
Stats.ManaGrowth = Initializer->ManaGrowth;
Stats.ManaRegenerationGrowth = Initializer->ManaRegenerationGrowth;
}
void ADefaultPlayerState::NetMulticast_SetAttackType_Implementation(CooldownType Value)

View File

@@ -1,6 +0,0 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "PerformSkill.h"
// Add default functionality here for any IPerformSkill functions that are not pure virtual.

View File

@@ -1,28 +0,0 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "UObject/Interface.h"
#include "PerformSkill.generated.h"
// This class does not need to be modified.
UINTERFACE(MinimalAPI)
class UPerformSkill : public UInterface
{
GENERATED_BODY()
};
/**
*
*/
class PROMETHER_API IPerformSkill
{
GENERATED_BODY()
// Add interface functions to this class. This is the class that will be inherited to implement this interface.
public:
virtual void Skill4Started() = 0;
virtual void Skill4Triggered() = 0;
virtual void Skill4Completed() = 0;
};