기본 콘텐츠로 건너뛰기

4월, 2025의 게시물 표시

250430 문 여닫기

문 여닫기 문이 가져야 할것 플레이어가 가까이 있는가 잠겨져 있는가 아닌가 문이 여닫히는 애니메이션 소리(문에서 소리나야하니까) 앞으로, 뒤로 열릴지(플레이어의 전후방여부) 플레이어가 필요한 것 E키 액션 문이 알아야할 것 플레이어는가 E키를 눌렀는가 C++ MajorDoor 부모 클래스 생성 : 플레이어의 입력을 받아야하므로 MajorDoor에 함수를 만듦. 플레이어 기준에서 MajorDoor에 대한 헤더파일을 Include하고 MajorDoor->DoorOpen()같은 식으로함. 플레이어는 E키를 누르면 MajorDoor->DoorOpen()으로 함. 이렇게 하면 각각의 문에 대해 필요한 기능은 따로 만들면 됨. 방법1 트레이스를 이용한 방법 Arrow를 기점으로 트레이스를 발사한다. 방법2 Collision을 이용한 방법 BackBox은 Operate를 받기 위해서만 사용. FrontBox의 Collision의 Overlap만 확인하면 된다.

250429 WidgetHUD, FText

Widget Hud  Image와 Text를 추가하기 위해 헤더파일에 선언 하고 HUD를 가져오자 ConstructorHelpers로 가져와지기는 하지만 위젯의 성격상 불안하므로 추후 변경할 예정이다. SetVisibility(ESlateVisibility::Hidden) LoadObject는 런타임중에 하는 것이므로 생성자에서 사용하지 않도록 주의 TMap을 이용해서 이미지, 텍스쳐를 가져오자  BeginPlay이후에 넣어주어야 한다. TMap이므로 Num(), Contains, 존재여부로 확인해주자. Map 사용시 if로 Map.Num() > 0 Map이 초기화 되어 있고 비어있지 않은가 Map.Contains(Key) Map에 해당하는 Key값이 있는가 Map[Key] Map의 Key값에 대한 Value가 유효한가 초기화 Map.Add(Key, defaultvalue); Map은 Array가 처음에 크기를 지정하는 것처럼 사이즈를 지정해주는 방법으로 위와 같이 Add로 Key, Value를 지정해주어야 한다. CurrentBulletCount와 SaveBulletCount를 if를 통해 확인한다. 현재 총안에 장전된 CurrentBullet과 인벤토리안에 내가 가지고 있는SaveBullet으로 표시한다. FText의 숫자를 이용할 때는 아래의 AsNumber를 이용해 값을 변경하고, 문자열은 FromString을 통해 변환해주고 있다. FText의 Format을 이용하고, SetText를 통해 해당 값을 보여주고 있다. 참고로 텍스트를 표시하고 싶지 않을 때는 SetText(FText::GetEmpty())를 이용하자 👾참고 FText https://dev.epicgames.com/documentation/ko-kr/unreal-engine/ftext-in-unreal-engine 텍스트 현지화 https://dev.epicgames.com/documentation/ko-kr/unreal-engine/text-localization...

250428 카메라 셰이크 위젯

카메라 셰이크(흔들기) LegacyCameraShake를 하나 생성한다. Oscillation Duration : CameraShake 기간 Rot Oscillation : 회전 . 회전은 끼치는 영향이 크므로 사용을 자제하자. Loc Oscillation : 위치 변환. Fov Oscillation : 화각 Anim Shake : 그래프를 통한 흔들기 Amplitude : 강도 (진폭) Frequency : 속도 (주기) 카메라 셰이크는 각 스킬, 상황 등에 따라 각각 만들어서 관리하는 편이 좋다. UMG 위젯 변경시에 RemoveFromParent등으로 인한 오류가 발생하기 쉬우므로 주의하자. 프로젝트명.Build.cs에 "UMG"를 추가해주고 주석을 풀어주거나 추가한다. PrivateDependencyModuleNames.AddRange(new string[] {"Slate", "SlateCore"}); 그리고 Generate Visual studio project files 를 통해 플러그인이 추가된다. 헤더파일에 "Blueprint/UserWidget.h"를 추가한다. 에디터 상에서 Widget Blueprint를 추가한 후, 경로를 넣어준다. 경로 끝에 _C를 주의하자. 위젯은 플레이어가 조준할때 필요하므로 이때 생성 및 AddToViewport()를 해준다. 각 무기별로 총알을 설정해주자. 이것도 리스트나 맵등으로 관리해주면 좋긴하다. 위젯에서 새로운 무기가 추가될 때 마다 변수를 설정해줘야 하기 때문에 이를 대신한 방법으로 CurrentBulletCount를 Text와 연결해서 보여준다. 따라서 CurrentBulletCount의 값이 무기에 따라 바뀌도록 해야 한다. 현재 게임은 조준 시에 값이 전환되도록 하고 있다. 경우에 따라서는 장비 아이템을 바꿈과 동시에 표기를 바꿀 수도 있다. 조준을 해제할 때는 RemoveFromViewport로 위젯을 해제한다. 발사 시에는 총...

250425 Volume, Sequence2

Volume Blocking Volume 길막용 Cull Distance 플레이어의 카메라가 안에 들어가기 전에는 안에 있는 물체가 보이지 않음.(렌더링X) 오브젝트와 카메라의 거리와 오브젝트 크기에 따라 오브젝트를 컬링(화면에 그려지지 않음) 거리에 따라 보일지 말지를 설정하는 것. 하단은 모범사례 마지막의 Cull Distance 0으로하면 해당 사이즈 2048 이상이면 사라지지 않게 된다. 같이 사용되는 LOD : Level Of Detail의 경우 보통 대부분의 스태틱 메쉬는 LOD Auto로 설정되어 있다. 그렇지 않은 경우에는 Custom으로 만들거나 Auto로 설정해주어야 한다. Pain Causing Volume 대미지를 주는 Volume Kill Zone Volume FellOutofWorld 맵의 끝에 두어서 사라지게 만들거나 세계의 바닥을 벗어나면 죽게 만들기 주로 테스트용 Trigger Volume 레벨 블루프린트에서 Reference to 등을 이용해서, Overlap을 확인할때 사용 주로 테스트 Physic Volume 주로 물 지형 만들 때 사용. Local Fog 멀리 있는 배경, 물체에 간단한 안개 효과 가까이 가면 사라짐. 억지로 보이게 할 수 있지만 안좋음. 꾸미기용. 실질적으로는 Exponent Height Fog이용 Camera Shake Actor 기존에 만든 카메라 셰이크를 가져와서 사용. Attenuation Radius에 따라 적용 정도가 바뀜. Content - Movies File Media Source는 단순히 영상의 위치를 저장하므로, 실질적인 영상도 해당 위치에 포함 시킨뒤에 Import해주어야 한다. 텍스쳐에 우클릭하여 머티리얼을 생성 Unlit, Emissive Color에 연결 Plane의 머티리얼로 추가 재생하면 동영상이 그대로 머티리얼을 통해 Plane에 표현되는 것을 확인 할 수 있다. Play / Stop Open Source With Options로 가져온다. Media Player Optio...