Core Reboot:Four Seasons - #30 에너지 시스템 및 로봇의 작동 중지
·
프로젝트/CR4S
에너지 시스템ModularRobotStatusComponentvoid UModularRobotStatusComponent::StartConsumeEnergy(){ if (RobotStatus.EnergyConsumptionInterval>KINDA_SMALL_NUMBER&&GetWorld()) { GetWorld()->GetTimerManager().SetTimer( EnergyTimerHandle, this, &UModularRobotStatusComponent::ConsumeEnergyForInterval, RobotStatus.EnergyConsumptionInterval, true ); }}void UModularRobotStatusComponent::StopConsumeEn..
Core Reboot:Four Seasons - #29 스턴 디버프 구현 - 모든 입력 차단
·
프로젝트/CR4S
스턴 디버프void AModularRobot::SetInputEnable(const bool bEnableInput){ APlayerController* PC=Cast(GetController()); if (!CR4S_ENSURE(LogHong1,PC)) return; UEnhancedInputLocalPlayerSubsystem* InputSubsystem=ULocalPlayer::GetSubsystem(PC->GetLocalPlayer()); if (!CR4S_ENSURE(LogHong1,InputSubsystem)) return; if (bEnableInput) { InputSubsystem->AddMappingContext(InputMappingContext,RobotSettings.Mappi..
Core Reboot:Four Seasons - #28 트러블슈팅 - AttachToComponent 활용시의 소켓이 추가되는 본에 따른 차이점
·
프로젝트/CR4S
문제 상황기존에는 정상적으로 의자 중심에서 캐릭터가 벗어나지 않았음애니메이션 수정으로 인해 에셋을 교체하게 되면서 갑자기 캐릭터가 로봇이 움직일 때 함께 움직이기 시작현재는 로봇이 들썩이면 캐릭터의 위치가 어긋나는 상황해결 과정분명 애니메이션 수정으로 인해 BP 및 스켈레톤을 교체하기 이전까지는 멀쩡했음에셋을 교체하는 과정에서 설정이 잘못된 것들이 있는지 점검스켈레톤을 살펴보던 중 캐릭터가 부착되는 소켓이 Root 본에 부착된 것을 확인기존에는 Hip 본에 부착하여 사용했었음생각나는 차이점이 이것 뿐이라서 소켓 위치를 옮겨 보기로 결정소켓의 부모 본을 Root ㅡ> Hip으로 교체하니 문제 해결결론 및 고찰Root에 소켓이 부착되었을 때는 사진에서도 알 수 있듯이 Root본이 Hip과 4개의 다리 관련 ..
Core Reboot:Four Seasons - #27 트러블슈팅 - 부적절한 상황에서의 스태미너 소모
·
프로젝트/CR4S
문제 상황캐릭터가 스태미너라는 자원을 활용해 달리기, 구르기와 같은 행동을 하고 코스트를 소모그 과정에서 구르기를 하는 도중에 다시 Shift(구르기 버튼)이 입력되면 스태미너만 소모되고 행동은 수행되지 않음심지어 Shift를 여러번 누르면 여러번 누르는 만큼 스태미너가 소모됨예) 구르기 1번을 수행하는 도중 Shift 4번 입력 (스태미너가 구르기 4번치만큼 모두 소모)해결 과정void APlayerCharacter::Input_OnRoll(){ static constexpr auto PlayRate{1.3f}; if (!CR4S_ENSURE(LogHong1,Status->ConsumeResourceForRoll()) return; StartRolling(PlayRate);}/////////////..
Core Reboot:Four Seasons - #26 리소스(스태미너) 감소 및 회복 시스템
·
프로젝트/CR4S
Resource (캐릭터: 스태미너, 로봇: 과열) 시스템기본 감소 및 회복 관련 함수bool UBaseStatusComponent::HasEnoughResourceForRoll() const{ return GetCurrentResource()>=BaseStatus.RollStaminaCost;}//Dash & Rollvoid UBaseStatusComponent::ConsumeResourceForRoll(){ AddCurrentResource(-BaseStatus.RollStaminaCost); OnResourceConsumed();}void UBaseStatusComponent::StartResourceRegen(){ if (!CR4S_ENSURE(LogHong1,GetWorld())) return;..
Core Reboot:Four Seasons - #25 트러블슈팅 - Component 이름 변경과 리다이렉터로 인한 인식 오류
·
프로젝트/CR4S
문제CombatComponent의 기능을 나누어 InputBuffer, WeaponTrace라는 새로운 2가지 컴포넌트 생성이후 InputBuffer를 그대로 쓰려니 캐릭터, 로봇에 따라 다르게 동작해야 하는 부분을 인지캐릭터, 로봇 전용 InputBufferComponent를 만들기로 결정ㅡ> InputBuffer를 같은 부모 클래스로 하게끔각 클래스들을 구현하고 에디터에서 동작을 확인하려니 WeaponTrace는 정상 작동하지만, InputBuffer는 전혀 정상 작동하는 것 같지가 않음해결과정기존 Component를 분리하여 2개의 컴포넌트를 만드는 과정에서 이름변경을 하게 되면서 리다이렉터들이 생성이전에 리다이렉터 때문에 해당 클래스 인식에 오류가 생기는 현상을 겪은 적이 있어 생성된 리다이렉터들..
Core Reboot:Four Seasons - #24 CombatComponent 리팩토링 -InputBuffer & WeaponTrace Component 기능 분리
·
프로젝트/CR4S
InputBuffer헤더#include "CoreMinimal.h"#include "Components/ActorComponent.h"#include "InputBufferComponent.generated.h"class UPlayerCharacterStatus;class APlayerCharacter;UENUM(BlueprintType)enum class EInputType : uint8{ None UMETA(DisplayName = "None"), Attack UMETA(DisplayName = "Attack"), RobotAttack1 UMETA(DisplayName = "RobotAttack1"), RobotAttack2 UMETA(DisplayName = "RobotAttack2")};U..
Core Reboot:Four Seasons - #23 CombatComponent의 담당 기능 범위에 대한 고찰 (인풋 버퍼, 무기 범위 감지 및 데미지 적용)
·
프로젝트/CR4S
로봇의 무기 관리 시스템문제기존 기획은 마스터 포즈 컴포넌트에 의해 무기 변경시 로봇의 부위별 메시가 바뀌는 형식무기도 신체 부위의 일부가 바뀌는 느낌으로 생각따라서 무기가 변경될때 장착되는 부위에 맞는 메시가 존재하는 형태로 인식Ex) 어깨, 팔에 장착되는 A 무기의 메시가 장착 부위에 따라 상이하지만, 위 방식대로 무기가 장착 부위마다 별도의 메시가 필요하다면 (무기 종류) X (장착 부위) 만큼의 메시 에셋이 필요아무리 생각해도 이런 구조는 비효율적이라 판단기본 메시에 무기 장착 위치를 나타내는 소켓 존재 + 무기 메시가 따로 존재하는 존재가 이상적이라 생각ㅡ> 기존 UObject 기반의 순수 데이터 클래스 형태의 무기 구조 개편 필요의사 결정기획자분과 상의 결과 : 로봇의 몸 구성요소 중에 팔, ..
Core Reboot:Four Seasons - #22 개발용 각종 매크로 추가 & CombatComponent 리팩토링
·
프로젝트/CR4S
유효성 검사 매크로#define CR4S_ENSURE_IMPLEMENTATION(Category, Expression, bShouldBreak) \ ([&]() -> bool \ { \ static bool bShouldBreakOnFirst = bShouldBreak; \ if (!(Expression)) \ { \ ..
Core Reboot:Four Seasons - #21 로봇 대쉬 기능 & 무기 데이터 구조 및 로드 방식 설계
·
프로젝트/CR4S
로봇 대쉬 기능헤더 UFUNCTION() void Input_Dash(const FInputActionValue& Value); UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Settings|Modular Robot", Meta = (DisplayThumbnail = false)) TObjectPtr DashAction; uint8 bIsDashing:1 {false};소스void AModularRobot::Input_Dash(const FInputActionValue& Value){ if (bIsDashing) return; bIsDashing = true; FVector LastInput=GetLastMovementInpu..

.menu_toolbar { display: none !important; }