project.h
- DECLARE_LOG_CATEGORY_EXTERN을 이용하여 로그 표시 선언
character.h
- UCLASS(Blueprintable)을 위에 선언함으로써 blueprint에서 접근할 수 있게 선언
public:
- FORCEINLINE 코드를 사용해서 inline효과를 부여
- private에 있는 변수를 return 시킴
- tick 이벤트를 virtual 하여 override
private:
- UPROPERTY(VisibleAnywhere, BlueprintReadOnly,Category=Camera,meta=(AllowPrivateAccess="true"))로 통일
(모두 카메라에 담기기 때문에 Category 통일 meta를 이용해 private에 접근 허용
UCameraComponent = 카메라
USprintArmCompoent = 스프링암
UDecalComponent = 커서
character.cpp
생성자:
- GetCapsuleComponent()->InitCapsuleSize(Rad,Height)를 이용해 초기 캡슐 크기 조정
- bUseControllerRotationPitch, bUseControllerRotationYaw, bUseControllerRotationRoll을 false처리함으로
캐릭터가 카메라 방향으로 회전하는 것을 막는다.
- character movment를 가져와서 적용 (캐릭터 움직임)
GetCharacterMovement()->bOrientRotationToMovement = true 캐릭터가 이동방향으로 회전
GetCharacterMovement()->RotationRate=FRotator(0.f,640.f,0.f); 회전 속도 결정
GetCharacterMovement()->bConstrainToPlane = true 바닥에서만 허용
GetCharacterMovement()->bSnapToPlaneAtStart = true;
카메라 spring arm:
CreateDefaultSuboject<USpringArmComponent)를 이용해 springarm 생성
SetupAttachment(RootComponent)를 이용하여 RootComponent에 장착
SetUsingAbsoluteRotation(true) 캐릭터가 행동할 시 springarm 회전 방지
TargetArmLength 길이 조절
SetRelativeRotation(FRotator(x,y,z)) 카메라 머리 방향 조절
bDoCollisionTest = false 카메라가 레벨에 충돌해 밀림 방지
카메라:
createDefaultSubobject<UCameraComponent>를 이용해 카메라 소환
SetupAttachment로 springarm에 결합
bUsePawnControlRotation = false 로 arm이 돌아감에따라 카메라 돌기 방지
커서:
CreateDefaultSubobject<UDecalComponent>를 이용하여 커서 소환
SetupAttachment(RootComponent>를 이용하여 RootComponent에 장착
static ConstructorHelpers::FObjectFinder<UMatherial> DecalMaterialAsset(TEXT("위치"));
로 DecalMaterialAsset이라는 변수에 커서 material을 설치
if문을 이용하여 DecalmaterialAsset.Suceeded()가 true인지 false인지 확인(성공한 경우 처리)
DecalSize=FVector(x,y,z)를 이용해 사이즈 조절
SetRelativeRotation(FRotator(x,y,z).Quaternion())을 이용하여 방향 조절
tick:
Super::Tick(DeltaSeconds);
if를 이용하여 커서를 정상적으로 가리키는지 확인 CursorToWorld!=nullptr
FHitResult로 TraceHitResult 변수 선언
Controller에서 GetHitResultUnderCursor(ECC_Visiblility, true, TraceHitResult);
FVector를 이용하여 TraceHitResult(Hit 결과 저장된 변수).ImpactNormal 지정 위치에 impact 소환
FRotator를 이용하여 위 impact의 방향 조절
커서변수->SetWorldLocation(TraceHitResult.Location); 커서 위치
커서변수->SetWorldRotation(커서방향변수) 커서 방향 조절
마우스를 이용한 콜리젼 실행!!
변수:
FHitResult Hit결과 저장 변수
bool const Hit 여부 저장 변수
콜리젼 실행
Hit여부 저장 변수 = 플레이어 컨트롤러->
GetHitResultUnderCursorByChannel(UEngineTypes::ConvertToTraceType
(콜리젼 체널 종류(ECC_Visibllity), TraceComplex여부(bool),Hit결과 저장변수));
'Unreal Engine 4 > Unreal Engine 4 개발일지' 카테고리의 다른 글
2022/03/14 강남스퀘어 캐릭터 백업본 (0) | 2022.03.14 |
---|---|
Unreal Engine 4 개발 - TopDownCharacter C++ 해석 2 (0) | 2021.07.22 |
Unreal Engine 4 개발 C++ 계획표 21.07.10 (0) | 2021.07.10 |
Unreal Engine 4 개발일지 5일차 스킬에 대한 알고리즘 작성 (0) | 2021.05.24 |
Unreal Engine 4 개발일지 4일차 베이스 제작 이후의 기획 (0) | 2021.05.18 |