회전방향 동기화
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
@@ -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;
|
||||
};
|
||||
Reference in New Issue
Block a user