오늘 한 것:
- 기획 발표
- CharacterBase 클래스 develop에 올리기
#pragma once #include "CoreMinimal.h" #include "GameFramework/Character.h" #include "BACharacterBase.generated.h" UENUM(BlueprintType) enum class EBACharacterState : uint8 { Alive UMETA(DisplayName = "Alive"), Invincible UMETA(DisplayName = "Invincible"), // i-frame 등 무적 상태 Dead UMETA(DisplayName = "Dead"), }; UCLASS() class BAPROJECT_API ABACharacterBase : public ACharacter { GENERATED_BODY() public: ABACharacterBase(); virtual void Attack(); virtual float TakeDamage(float DamageAmount, FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser) override; FORCEINLINE bool IsAlive() const { return CharacterState != EBACharacterState::Dead; } FORCEINLINE bool IsInvincible() const { return CharacterState == EBACharacterState::Invincible; } FORCEINLINE bool CanReceiveDamage() const { return IsAlive() && IsInvincible() == false; } FORCEINLINE EBACharacterState GetCharacterState() const { return CharacterState; } protected: UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Combat") EBACharacterState CharacterState; virtual void OnDamaged(float FinalDamage, AActor* DamageCauser); virtual void OnDeath(); };
주말에 할 것들:
- 1챕터 맵 그레이박싱
- 캐릭터 베이스 공용 컴포넌트 작성하기
- 스탯
- 전투관리자(BattleManager) 싱글톤
남은 것들:
- 캐릭터
- 카메라 에이밍
- input 매핑
- 대미지 증감
- 걷기/달리기/전력질주
- 스테미너 소모/리젠
- 애니메이션
- 구르기
- 스패밍 방지 → 스택 사용
- 락온
- 카메라 고정
- 구르기를 회피로