EPortfolio 의 플레이가 가능한 Character Class 입니다.
UPROPERTY(ReplicatedUsing = OnRep_OverlappingWeapon) TObjectPtr<class AEWeapon> OverlappingWeapon;Overlap 된 Weapon 을 담을 맴버 변수입니다.
서버에서 값 변경시 클라이언트에게 자동 동기화 되며 OnRep_OverlappingWeapon 을 클라이언트에게 호출합니다.
UPROPERTY(VisibleAnywhere, Category = "Camera") TObjectPtr<class USpringArmComponent> CameraBoom;USpringArmComponent 맴버 변수입니다.
UPROPERTY(VisibleAnywhere, Category = "Camera") TObjectPtr<class UCameraComponent> FollowCamera;UCameraComponent 맴버 변수입니다.
UPROPERTY(EditAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = "true")) TObjectPtr<class UWidgetComponent> OverheadWidget;UWidgetComponent 맴버 변수로 플레이어의 이름을 표시합니다.
UPROPERTY(VisibleAnywhere) TObjectPtr<class UECombatComponent> CombatComponent;UECombatComponent 맴버 변수입니다.
UPROPERTY(Replicated) FVector2D MovementVector;이동 입력 방향을 저장할 맴버변수입니다.
UPROPERTY() TObjectPtr<class AEPlayerController> EPlayerController;AEPlayerController 맴버 변수입니다.
bool bElimmed = false;플레이어의 제거 여부입니다.
FTimerHandle ElimTimer;제거 타이머 핸들입니다.
FOnTimelineFloat DissolveTrack;제거 타임라인 사용시 Float Curve를 활용할 맴버 변수입니다.
UPROPERTY() TObjectPtr<class AEPlayerState> EPlayerState;AEPlayerState 맴버 변수입니다.
UPROPERTY(EditDefaultsOnly, Category = "Movement") float RunSpeed;플레이어의 달리기 속도 입니다.
UPROPERTY(EditDefaultsOnly, Category = "Movement") float WalkSpeed;플레이어의 걷기 속도입니다.
UPROPERTY(EditDefaultsOnly, Category = "Movement") float CrouchSpeed;플레이어의 웅크리기 걷기 속도 입니다.
UPROPERTY(EditDefaultsOnly, Category = "Movement") float SlowWalkSpeed;플레이어의 느린 걷기 속도입니다.
UPROPERTY(EditDefaultsOnly, Category = "Player Stats") float MaxHealth = 100.f;플레이어의 최대 체력입니다.
UPROPERTY(ReplicatedUsing = OnRep_Health, VisibleAnywhere, Category = "Player Stats") float Health = 100.f;플레이어의 현재 체력입니다.
UPROPERTY(EditDefaultsOnly) float ElimDelay = 3.f;제거 딜레이 입니다.
UPROPERTY(EditDefaultsOnly, Category = "Elim") UAnimMontage* ElimMontage;제거시 사용할 몽타주입니다.
UPROPERTY(VisibleAnywhere) TObjectPtr<UTimelineComponent> DissolveTimeline;UTimelineComponent 맴버 변수로 플레이어 제거시 사용됩니다.
UPROPERTY(EditDefaultsOnly) TObjectPtr<UCurveFloat> DissolveCurve;플레이어 제거시 사용될 Curve 입니다.
UPROPERTY(VisibleAnywhere, Category = "Elim") TArray<UMaterialInstanceDynamic*> DynamicDissolveMaterialInstances;플레이어 제거시 교체할 UMaterialInstanceDynamic 맴버 입니다.
UPROPERTY(EditAnywhere, Category = "Elim") TArray<TObjectPtr<UMaterialInstance>> DissolveMaterialInstances;플레이어 제거 DissolveMaterialInstances 맴버 입니다.
UPROPERTY(EditDefaultsOnly, Category = "Input") TObjectPtr<class UInputMappingContext> IMCPlayer;UInputMappingContext 맴버 입니다.
UPROPERTY(EditDefaultsOnly, Category = "Input") TObjectPtr<class UInputAction> IAMove;이동 UInputAction 입니다.
UPROPERTY(EditDefaultsOnly, Category = "Input") TObjectPtr<class UInputAction> IALook;시점 전환 UInputAction 입니다.
UPROPERTY(EditDefaultsOnly, Category = "Input") TObjectPtr<class UInputAction> IAJump;점프 UInputAction 입니다.
UPROPERTY(EditDefaultsOnly, Category = "Input") TObjectPtr<class UInputAction> IAEquip;장착 UInputAction 입니다.
UPROPERTY(EditDefaultsOnly, Category = "Input") TObjectPtr<class UInputAction> IACrouch;웅크리기 UInputAction 입니다.
UPROPERTY(EditDefaultsOnly, Category = "Input") TObjectPtr<class UInputAction> IARun;달리기 UInputAction 입니다.
UPROPERTY(EditDefaultsOnly, Category = "Input") TObjectPtr<class UInputAction> IASlowWalk;느린 걷기 UInputAction 입니다.
UPROPERTY(EditDefaultsOnly, Category = "Input") TObjectPtr<class UInputAction> IAAiming;에임 조준 UInputAction 입니다.
UPROPERTY(EditDefaultsOnly, Category = "Input") TObjectPtr<class UInputAction> IAFire;발사 UInputAction 입니다.
UPROPERTY(EditDefaultsOnly, Category = "Input") TObjectPtr<class UInputAction> IADodge;회피 동작 UInputAction 입니다.
UPROPERTY(EditDefaultsOnly, Category = "Input") TObjectPtr<class UInputAction> IAReload;재장전 UInputAction 입니다.
- BeginPlay
- OnRep_PlayerState
- PossessedBy
- SetupPlayerInputComponent
- GetLifetimeReplicatedProps
- PostInitializeComponents
virtual void Tick(float InDeltaTime) override;PollInit 실행
- OnRep_OverlappingWeapon
- OnRep_Health
- MulticastHit
- MulticastDodge
- MulticastElim
- UpdateHealth
- Elim
- ServerEquip
- ServerSetMaxSpeed
- SetOverlappingWeapon
- SetMaxSpeed
- ReceiveDamage
- ElimTimerFinished
- UpdateDissolveMaterial
- StartDissolve
- PollInit
void MoveAction(const struct FInputActionValue& InputActionValue);Controller 의 Yaw 회전 값에 따라 이동합니다.
void LookAction(const struct FInputActionValue& InputActionValue);Controller 의 Yaw , Picth 의 값을 조정합니다.
void JumpAction(const struct FInputActionValue& InputActionValue);bIsCrouched 상태가 아니라면 점프합니다.
void EquipAction(const struct FInputActionValue& InputActionValue);CombatComponent 가 존재한다면
- HasAutority
서버 권한 확인
- 서버라면
CombatComponent 의 EquipWeapon겹친 무기 장착
CombatComponent 의 SetItemAnimLayer애니메이션 레이어 업데이트- 아니라면
CombatComponent 의 ServerEquip서버에서 장착 업데이트
CombatComponent 의 ServerSetItemAnimLayer서버에서 애니메이션 레이어 업데이트
void CrouchAction(const struct FInputActionValue& InputActionValue);bIsCrouched 상태에 따라 웅크리기와 웅크리기 해제
void RunAction(const struct FInputActionValue& InputActionValue);조준중이거나 발사중이라면 함수 종료
InputActionValue 에 따라 SetMaxSpeed최고속력 업데이트
void SlowWalkAction(const struct FInputActionValue& InputActionValue);InputActionValue 에 따라 SetMaxSpeed
최고속력 업데이트
void AimingAction(const struct FInputActionValue& InputActionValue);
- CombatComponent 의 SetAiming
조준 상태 업데이트- SetMaxSpeed
최고속력 업데이트
void FiringAction(const struct FInputActionValue& InputActionValue);
- CombatComponent 의 Firing
발사 상태 업데이트- SetMaxSpeed
최고속력 업데이트
void DodgeAction(const struct FInputActionValue& InputActionValue);
void ReloadAction(const struct FInputActionValue& InputActionValue);
- Reload
발사 상태 업데이트
FORCEINLINE class UCameraComponent* GetFollowCamera() const { return FollowCamera; };
FORCEINLINE class USpringArmComponent* GetCameraBoom() const { return CameraBoom; };
FORCEINLINE bool IsElimmed() const { return bElimmed; }
float GetFootStepVolume() const;
FORCEINLINE float GetHealth() const { return Health; }
FORCEINLINE float GetMaxHealth() const { return MaxHealth; }
ECombatState GetCombatState() const;
bool IsAiming();
bool IsFiring();
AEWeapon* GetEquippedWeapon();
TSubclassOf<class UEPlayerLinkedAnimLayer> GetAnimLayer();
FVector GetHitTarget() const;