unreal29 언리얼엔진5 c++ Sphere Trace ▣ 코드설명 FDamageEvent() 함수를 사용하기 위해서는 Engine/DamageEvents.h 헤더를 추가해야 합니다. StartLocation: 좀비 메쉬의 hand_r라는 소켓 위치를 가져옵니다. 이는 좀비의 손 위치를 기준으로 충돌을 시작하는 지점을 설정합니다.EndLocation: SphereTrace의 시작과 끝 지점을 동일하게 설정(구체 중심). 여기서는 한 지점에서만 충돌을 검사하기 때문에 동일한 값을 사용합니다.SphereRadius: 충돌 체크를 수행할 Sphere의 반지름을 설정합니다. 여기서는 70.0f로 설정되어 있습니다.Params: 충돌 계산 중에 특정 액터를 무시하도록 설정합니다. 여기서는 NormalZombie(자기 자신)를 무시하도록 추가했습니다. SweepSi.. 2024. 11. 25. 언리얼엔진5 c++ OpenLevel ▣ UGameplayStatics::OpenLevel을 사용하여 현재 맵을 다시 로드 ▣ API https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/Engine/Kismet/UGameplayStatics/OpenLevel?application_version=5.5 2024. 11. 20. 언리얼엔진5 c++ Montage 함수 ▣ Montage_Play를 호출하면 해당 애니메이션이 처음부터 재생됩니다.Montage_Pause는 재생한 애니메이션을 멈춤니다.Montage_Resume는 이미 Montage_Pause된 애니메이션을 재개합니다. 하지만 Montage_Resume 전에 Montage_Play를 호출하면 의미가 없어집니다. 따라서 Montage_Resume과 Montage_Play는 동시에 호출하지 않아야 합니다. 2024. 11. 19. 언리얼엔진5 c++ GetMapName ▣ GetWorld()->GetMapName() 역할: 현재 로드된 맵의 이름을 반환. 반환 값: FString 타입으로 맵 이름을 반환합니다. 예: YourProjectName_Chapter0_Intro GetMapName은 현재 맵의 이름(예: YourProjectName_Chapter0_Intro)을 반환합니다. 이름은 프로젝트 이름과 맵 이름이 _로 연결된 형태로 반환됩니다. ▣ CurrentMapName.Contains(TEXT("Chapter0")) 역할: CurrentMapName 문자열에서 지정한 텍스트("Chapter0")를 포함하고 있는지 확인합니다. 반환 값: true: 문자열에 Chapter0이 포함된 경우. false: 문자열에 Chapter0이 포함되지 않은 경우. Conta.. 2024. 11. 16. 언리얼엔진5 c++ Ragdoll State ▣ 코드 설명 - AIController 중지 StopMovement() : AIController의 모든 이동 명령을 중지합니다. AI가 다른 목적지로 가고 있을 경우 멈추게 합니다.UnPossess() : AIController가 캐릭터와의 연결을 끊습니다. 이렇게 하면 AIController가 더 이상 캐릭터를 제어하지 않으며, 캐릭터는 자유로운 상태가 됩니다. 이 두 개의 함수 호출로 인해 캐릭터가 죽으면 AI가 완전히 중지되어 추가 명령이 캐릭터에 전달되지 않게 됩니다. - Character Movement 중지 DisableMovement(): 캐릭터의 이동 기능을 비활성화하여 움직임이 멈추도록 합니다.- Physics Simulation 활성화 및 Collision Profile 변경 S.. 2024. 11. 15. 언리얼엔진5 c++ Damage IgnoreHit random ▣ 코드 설명 IgnoreHitChance 설정: IgnoreHitChance 값으로 피격 반응을 무시할 확률을 설정합니다. 예를 들어, 0.3f로 설정하면 30% 확률로 피격 반응을 무시합니다.확률 계산: FMath::FRand()는 0.0에서 1.0 사이의 랜덤 부동소수점 값을 반환합니다. 이 값이 IgnoreHitChance 이하일 경우 피격 반응을 무시합니다.피격 반응 조건: 확률을 통해 피격 반응이 무시된 경우에는 return Damage;로 함수를 종료하여 피격 효과와 애니메이션을 재생하지 않습니다. 확률에 따라 피격 반응이 무시되지 않은 경우, 피격 애니메이션과 효과를 정상적으로 재생합니다. 2024. 11. 12. 언리얼엔진5 c++ AI Damage Stop Move ▣ MovementComponent->StopMovementImmediately() 설명: 이 함수는 모든 현재 이동을 즉시 중지합니다. 캐릭터가 이동 중이든 가속 중이든 상관없이 이동을 멈추며, 위치를 고정시킵니다. 주 용도: 캐릭터의 이동을 멈추고 싶을 때 사용됩니다. 예를 들어, 피격 효과를 구현할 때 캐릭터가 이동 중이라면 이를 멈추게 하는 데 유용합니다. ▣ MovementComponent->SetComponentTickEnabled(false) 설명: 이 함수는 컴포넌트의 틱(Tick) 업데이트를 비활성화합니다. 즉, 컴포넌트가 매 프레임 업데이트되지 않으며, 이를 통해 움직임을 일시적으로 멈출 수 있습니다. 주 용도: 애니메이션과 피격 효과는 유지하면서 이동만 멈추고자 할 때 사용합니다. ▣.. 2024. 11. 11. 언리얼엔진5 c++ Hit Niagara 재생 ▣ NiagaraFunctionLibrary를 사용하기 위해서는 Niagara 모듈을 프로젝트에 추가해야 합니다. Niagara 모듈이 포함되지 않으면 해당 헤더 파일을 찾을 수 없다는 오류가 발생할 수 있습니다. 이를 해결하려면 프로젝트의 Build.cs 파일에 Niagara 모듈을 추가해야 합니다. ▣ UNiagaraSystem 타입을 사용하여 Niagara FX를 HitFXArray에 추가합니다.UNiagaraFunctionLibrary::SpawnSystemAtLocation을 사용하여 충돌 위치(HitLocation)에서 Niagara FX를 재생합니다.각 Niagara FX는 /Game/Effects/NS_Hit1와 같은 경로에 위치한다고 가정합니다. 필요에 따라 경로 했습니다. ▣ Const.. 2024. 11. 8. 언리얼엔진5 c++ UMETA(DisplayName = " ") ▣ UMETA(DisplayName = "")는 Unreal Engine의 UENUM에서 각 열거형 값(enum value)에 특정한 디스플레이 이름(Display Name)을 지정할 때 사용됩니다.UMETA는 Unreal의 메타데이터 표기로, DisplayName은 엔진 에디터에 표시될 이름을 지정할 수 있는 메타 데이터 필드입니다.이를 사용하면 에디터에서 더 직관적이고 사용자 친화적인 이름으로 열거형 값을 표시할 수 있습니다. ▣ UMETA가 유용한 이유 UMETA(DisplayName = "Work")와 같은 메타데이터를 활용하면 다음과 같은 장점이 있습니다:에디터에서 더 직관적인 이름 제공: DisplayName을 통해 C++ 변수명 대신 더 직관적이고 보기 좋은 이름을 제공할 수 있습니다. 다국.. 2024. 10. 26. 언리얼엔진5 c++ 카메라 상하 이동(총기 반동) ▣ AddPitchInput(float Val) 설명: 카메라의 피치(Pitch)를 조정하는 함수로, 카메라를 상하로 움직입니다. 입력 값(Val)이 양수이면 카메라가 아래로 향하고, 음수이면 위로 향하게 됩니다. 1인칭 게임에서는 위아래 시점 조절, 3인칭 게임에서는 카메라 높이 조절로 사용됩니다. API :https://docs.unrealengine.com/5.0/en-US/API/Runtime/Engine/GameFramework/APlayerController/AddPitchInput/ ▣ AddYawInput(float Val) 설명: 카메라의 야우(Yaw)를 조정하는 함수로, 카메라를 좌우로 회전시킵니다. 입력 값(Val)이 양수이면 카메라가 오른쪽으로 회전하고, 음수이면 왼쪽으로 회전합니.. 2024. 10. 1. 언리얼엔진5 c++ Widget Image Chanage ▣ 헤더 파일 추가 (#include "Components/Image.h") UImage를 사용하기 위해 Components/Image.h 헤더를 추가합니다. 이 헤더에는 이미지 위젯과 관련된 모든 함수 및 클래스가 정의되어 있습니다. ▣ 조건 체크 및 초기화 if (Animinstance->IsGetWeapon && Animinstance->WeaponType != 3): 플레이어가 무기를 장착하고 있고, 무기의 종류가 특정 타입(3번 타입)이 아닌 경우 조준 상태로 변경하는 조건입니다. if (HUDClass == nullptr): HUDClass가 아직 로드되지 않은 상태라면, LoadClass를 사용해 블루프린트 위젯 클래스를 로드합니다. TEXT("/Game/UMG/WB_HUD.WB_HUD_.. 2024. 9. 27. 언리얼엔진5 c++ ConstructorHelpers::FClassFinder와 LoadClass<>, LoadObject<> 차이 ▣ ConstructorHelpers::FClassFinder 역할: 클래스를 찾는 데 사용되며, 주로 객체(액터, 컴포넌트 등)의 생성자(Constructor)에서 사용됩니다. 사용 시점: 객체가 생성될 때, 자산이나 클래스를 미리 로드하여 사용할 때 주로 사용됩니다. 특징: 주로 생성자 안에서 사용되며, 클래스나 자산을 즉시 로드합니다. 하드 리퍼런스를 사용하기 때문에 로드 경로에 있는 자산이나 클래스가 반드시 존재해야 합니다. 잘못된 경로나 존재하지 않는 클래스가 있을 경우 런타임 에러가 발생할 수 있습니다. 로드가 즉시 이루어지기 때문에, 게임 시작 시점 또는 에디터 로드 시점에 성능 저하를 초래할 수 있습니다. 주 사용 사례: 클래스가 반드시 있어야 하는 경우: 즉시 해당 클래스를 찾아서 로드해.. 2024. 9. 14. 언리얼엔진5 c++ OnOverlapBegin WidgetComponent 추가 https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/UMG/Components/UWidgetComponent/GetWidget ▣ c++코드에서 충돌 시 OtherActor가 유효한지 여부를 확인해야 합니다. 그러지 않으면 crash가 나게 됩니다. ▣ FindComponentByClass는 컴포넌트클래스를 찾습니다. 반환 후 꼭 찾은 여부 유효한지에 대한 조건문을 만들어줘서 충돌을 방지합니다. 2024. 7. 26. 언리얼엔진5 Physics Door ▣ 먼저 Actor를 생성하고 Static Mesh를 추가합니다. ▣ 해당 Static Mesh에 들어가서 Collstion을 추가합니다. ▣ Static Mesh에 디테일탭에서 Simulate Physics를 체크합니다. ▣ Phsics Constraint를 추가합니다. https://docs.unrealengine.com/4.27/ko/InteractiveExperiences/Physics/Constraints/ConstraintsReference/ 피직스 컨스트레인트 레퍼런스언리얼 에디터의 피직스 컨스트레인트에서 사용할 수 있는 모든 프로퍼티에 대한 레퍼런스입니다.docs.unrealengine.com ▣ PhsicsConstraint에 Component Name을 Static Mesh.. 2024. 6. 14. 언리얼엔진5 c++ FOnMontageEnded(Montage종료시 호출 델리게이트) ▣ Montage에 관한 헤더를 추가합니다. ▣ 몽타주 재생 종료에 대한 델리게이트를 인스턴스 선언하고 몽타주가 끝나면 호출되는 함수를 바인딩합니다. 종료 시 호출할 함수 선언 시 (UAnimMontage* Montage, bool isEnded) 매개변수로 선언해야 합니다. 그리고 몽타주가 끝나면 델리게이트에 연동된 함수를 호출하는 코드까지 작성합니다. 그럼 몽타주 재생 후 종료 시 해당 함수를 호출합니다. ▣ FOnMontageEnded 코드로 들어가면 이렇게 델리게이트 형식으로 선언되어 있는 걸 확인할 수 있습니다. 2024. 6. 14. 언리얼엔진5 c++ AIController Character AnimInstance Cast ▣ Character에 대한 참조 정의를 하기 위해서는 GameFramework/Character.h 헤더를 추가합니다. ▣ 그리고 Pawn -> Character -> Mesh -> AnimInstance를 하나하나 대입하고 캐스팅하여 가져와서 AnimInstace를 접근하여 사용가능합니다. 2024. 6. 4. 언리얼엔진5 Stealth Animation System ▣ 먼저 Stealth 공격, 죽음 애니메이션을 Import 합니다. ▣ 플레이어 블루프린트에서 SkeletalMesh를 추가하고 Animation Mode를 Asset으로 지정한 다음에 기본 애니메이션으로 지정합니다. ▣ 그리고 위치와 회전값을 변경하고 Hidden in Game을 체크하여 안 보이게 합니다. ▣ 그리고 키를 누르면 BoxTrance를 쏘고 해당 Actor가 Zombie라면 해당 Actor를 숨기고 플레이어 애니메이션 재생하면서 SkeletalMesh를 다시 보이게 하고 애니메이션을 재생하는 노드를 완성합니다. ▣ 그리고 해당 좀비 Actor를 배치하고 ▣ 가까이 가서 키를 누르면 애니메이션이 재생되는 걸 확인할 수 있습니다. 2024. 5. 28. 언리얼엔진5 c++ FlashLight ▣ 먼저 플레이어 헤더파일에서 USpotLightComponent를 저장할 변수, FlashLight 소리 변수, FlashLight 함수를 선언합니다. https://docs.unrealengine.com/4.27/en-US/API/Runtime/Engine/Components/USpotLightComponent/ USpotLightComponentA spot light component emits a directional cone shaped light (Eg a Torch).docs.unrealengine.com ▣ cpp파일로 와서 필요한 헤더파일을 추가하고 SportLightComponent를 생성하고 상속 및 위치 회전을 하는 코드 작성 후 함수에서 키를 누르면 함수가 호출되고 Fl.. 2024. 5. 22. 언리얼엔진5 Morning Night System ▣ 먼저 Plusings에서 Sun Position Calculator를 체크해서 설치합니다. https://dev.epicgames.com/documentation/en-us/unreal-engine/geographically-accurate-sun-positioning-tool-in-unreal-engine?application_version=5.3 Geographically Accurate Sun Positioning Tool In Unreal Engine | Unreal Engine 5.4 Documentation | Epic Developer CommunityA tool giving you fine control over the Sun's geographic location based on l.. 2024. 5. 22. 언리얼엔진5 SpawnAIFromClass ▣ 먼저 Enemy cpp로가서 AIControllerClass에 대한 설정과 AutoPossessAI 설정을 하는 코드를 작성합니다. ▣ AutoPossessAI 종류 Disabled 기능이 비활성화되었습니다(AI를 자동으로 보유하지 않음). PlacedInWorld 폰이 세계에 배치된 경우에만 AI 컨트롤러가 소유합니다. Spawned 월드가 로드된 후 Pawn이 스폰된 경우에만 AI 컨트롤러가 소유합니다. PlacedInWorldOrSpawned 폰은 생성될 때마다 AI 컨트롤러에 의해 자동으로 소유됩니다. ▣ AI가 있는 스폰 하려면 Unreal Engine에서 "Spawn Actor for Class" 대신 "Spawn AI From Class" 노드를 사용해야 합니다. 이는 AI 캐릭터가 .. 2024. 5. 9. 언리얼엔진5 c++ CharacterMovement ▣ 먼저 h헤더파일에 CharacterMovementComponent에 데이터를 저장할 변수를 선언하고 GetCharacterMovement()를 대입합니다. ▣ cpp파일에서 필요한 헤더를 추가하고 ▣ CharacterMovement변수를 접근하여 변경하고 싶은 Speed를 대입해서 변경하면 됩니다. 2024. 5. 4. 이전 1 2 다음