2 minute read


짧게 주저리!

왜 힘든 일은 한 번에 일어날까? 그리고 나는 왜 항상 감당 못할 것들을 붙잡고 있을까

지나간 것들은 그만 보내주자~


여전히 벅찬 일 투성이지만 주변 도움을 받아 나름 잘 지내고 있다. 늘 생각하지만 나 인복이 정말 많아

늦은 밤이나 새벽에도 전화해주고 푸념 들어준 친구들아 내가 많이 사랑하는 거 알지

최근 한 달 정도 내가 정말 많이 징징거렸는데ㅎㅎ,, 다들 보살인가 왜 다 들어주는 거임

땅굴 팔 때마다 꺼내줘서 고맙구, 저는 다시 할 일 제대로 챙길 줄 아는 사람이 되어보겠숨다

그새 좁아진 시야도 넓혀서 주변 신경쓰는 다정한 사람이 될 수 있도록 노력할게

너희는 나랑 오래 봐야 함 이제 못 빠져나간다😗

근데 너네 안 자니?


생각 정리한 김에 새로운 마음가짐으로 프로젝트를 엎었다.

그리고 앞으로 이런 급발진은 절대 하지 말아야겠다고 다짐함

스스로 인생을 하드하게 만드는 편입니다.



0. 개요

즐겨 하던 RPG 장르 게임에 이것저것 도전을 해볼 예정이다.

기믹이나 상호작용 기능을 넣어보면서 모르는 기능 위주로 공부해보려고 한다.

8월 말까지 마무리 짓는 걸 목표로 하자.


내가 왜 게임을 좋아하는가 생각해보니, 게임을 즐기는 순간엔 일상의 정해진 경로에서 벗어날 수 있었다.

그래서 레벨링이나 스펙 경쟁보다 맵을 탐방하며 사람들과 함께 자유롭게 노는 걸 더 좋아했나 보다.

다음 번에 찾아올 무기력은 빠르게 극복해보기 위해 내 게임 성향에서 프로젝트명을 따왔다.

예지나 형식에 얽매이거나 부담 갖지 말고 재밌게 프로젝트 잘 만들어보자~💪





#.구현하면서~

들었던 생각🤭

내가 무슨 의도로 구현했는지, 개선점, 앞으로 해야할 일 …

코드를 작성하면서 오류가 났던 기억(+해결한 것까지!), 바보 같았던 실수 전부!

한심한 실수도 괜찮으니까 사소한 것들 다 적어보자~


  1. 무기도 그렇고, 상호작용을 한다던가 탈것을 이용할 때마다 애니메이션 블루프린트를 전환해야 할 것 같아서 AnimBPClass 변수를 만들었다.

    • 지금은 캐릭터 클래스에 아예 애님BP 경로랑 메시 지정이 다 되어 있는데, 코드가 너무 번잡스러워서… 좀 수정할 필요가 있음

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      
      if (CurrentWeapon->IsA<ASword>())
      {
          FString AnimBPPath = TEXT("/Game/ThirdPerson/Animations/AnimBP_Warrior.AnimBP_Warrior_C");
          UClass* AnimBPClass = LoadClass<UAnimInstance>(nullptr, *AnimBPPath);
               
          // 캐릭터 메시에 애니메이션 할당
          if (AnimBPClass)
          {
              GetMesh()->SetAnimInstanceClass(AnimBPClass);
          }
      }
      

      만약, 캐릭터가 칼을 장착했다면 이렇게!

      좀 더 깔끔하게 잘 쓸 수는 없을까? 저 함수에서는 정말 클래스를 전환하는 코드만 쓰고 싶었음.

      경로를 다른 곳에 빼놓을 수는 없을까 내 욕심인 걸까

      => 그냥 AnimBPPath 대신 캐릭터 블루프린트에서 애니메이션을 지정하도록 할까?

      • 마찬가지로, 무기를 전환할 때나 무기 애님인스턴스를 전환할 때마다 WeaponBase 클래스 변수에 자식 무기를 할당하고 클래스 비교를 하고 있다.
        • 클래스 비교를 하는 조건문 말고 좀 더 간결한 방식이 있지 않을까? 열거형을 사용하는게 좋을까?
          • 열거형을 사용하려면 어떻게?


  2. 무기 클래스에서 캐릭터 애님 몽타주를 호출해버림; ㅋㅋㅋㅋ멍청아 정신차리자

    • 사실 아직 정신 못차림ㅎㅎ;;
      • 내가 지금 무기 종류마다 애님 인스턴스를 다르게 지정해줬는데, 캐릭터 클래스가 Attack 함수를 호출했을 때가 문제다.
        • TSubClass<UAnimInstance> 변수 사용하면 하위 애님 인스턴스를 가져올 수 있다고는 하는데, 그걸 코드로 어떻게 지정해야할지 모르겠음
          • 일단 지금 써본 방식은, Sword를 장착했을 경우, Attack 함수가 호출되면 TSubClass<UAnimInstance> 객체가 Anim_Warrior 클래스 객체를 받아서 PlayAttackMontage함수를 호출하도록 코드를 짰는데, 이럼 언리얼 크래시가 난다.
          • Attack이 호출되면 SwordAttack 함수를 부를까? 어차피 활이나 지팡이 무기는 칼과 같은 콤보어택이 없을 수도 있으니까?
            • SwordAttack 함수에서 Anim_Warrior 클래스 객체의 PlayAttackMontage함수를 호출시키면 오류 안 날지도? 한번 해보자.


  3. 음 나는 무기 베이스 클래스에 자식으로 칼이나 활 클래스를 만들고, 개별 무기 클래스에서 TArray로 개별 무기들을 담아줬다.

    • 인벤토리에 있는 SwordMeshes[3]을 캐릭터한테 장착시키려면 어떻게 해야하지?
      • Sword 클래스에 SetSword를 따로 호출하고 Getter로 캐릭터한테 넘겨줘야겠다.
        • 그러면 지금 캐릭터 AttachSword 함수에 붙어 있는 SwordMeshes[0]를 수정해야함
        • 고정된 배열 변수 말고 Getter에서 칼 메시를 받아서 쓸 수 있도록!
    • 칼 메시마다의 데이터는 어떻게 적용하지?
      • 캐릭터에 Getter로 칼 스탯을 가져와서 캐릭터 스탯하고 합산하는 함수를 만들어야겠다.
      • 칼 스탯은 enum으로 관리하면 되나(대미지, 크리티컬, 공속, 부가효과?) 음 아직 잘모르겠다
        • 일단 해보고 오류 확인해가면서 고쳐보자 한번


  4. 지금 하고 싶은 거

    • CombatModeNonCombatMode를 만들어서 비전투모드면 달리기, 전투모드면 대시
    • 점프 후 지면에 착지하거나, 몬스터가 TakeDamage를 받으면 CameraShake

Leave a comment