목록전체 글 (189)
안선생의 개발 블로그

첫번 째 방법 1. 메인 에디터에서 툴-> 새로운 C++클래스 선택 두번쨰 방법 1. 콘텐츠 드로우에서 C++클래스 폴더의 오른쪽 화면에서 우클릭 -> 새C++클래스 선택 2. 그러면 C++ 클래스 마법사가 뜨며, 원하는 클래스를 선택해줍니다 없으면 모든 클래스를 선택 후 검색해서 찾아줍니다. 일반 클래스 모든 클래스 원하는 클래스를 선택하고 다음을 클릭 3. 새로운 클래스에 이름을 입력하라는 창이 뜹니다. 입력한 다음클래스 생성버튼을 누릅니다. 그러면 헤더(.h) 와 소스(.cpp) 파일이 생성됩니다. 클래스 이름은 알파벳과 숫자만 가능하며, 공백은 불가능합니다. 잘못된 이름을 입력하면 입력칸을 통해 알 수 있습니다. 클래스 타입을 퍼블릭이나 프라이빗으로 폴더형식으로 정리 할 수 있습니다. 큰 파일은 ..
언리얼 클래스 언리얼 엔진의 모든 게임플레이 클래스는 클래스 헤더 (.h) 파일과 클래스 소스 (.cpp) 파일로 이루어져 있습니다. 클래스 헤더에는 클래스와 그 멤버, 즉 변수와 함수에 대한 선언이 들어 있는 반면, 클래스 구현에는 해당 클래스에 속하는 함수 구현 (implement)을 통해 클래스의 함수성을 정의하는 곳입니다. 언리얼 엔진의 클래스에는 표준화된 작명 규칙이 있어, 클래스 이름 첫 글자, 다른말로 접두사만 봐도 클래스의 종류를 바로 알 수 있다. A 스폰가능한 게임플레이 오브젝트의 베이스 클래스에서 확장됩니다. 이들은 Actor, 액터로 월드에 바로 스폰 가능합니다. (APawn,ACharacter)등 Actor에서 파생됨 U 모든 게임플레이 오브젝트의 베이스 클래스에서 확장됩니다. 월..

언리얼 엔진에서의 로깅 디버깅 시 로그는 코드 실행 논리에 대한 세부 정보를 제공하는 귀중한 툴입니다. 함수 간에 전달되는 데이터 값을 조사하고 잠재적인 문제를 보고할 수 있습니다. UE_LOG UE_LOG 는 로그 파일에 서식이 지정된 메시지를 로깅하는 매크로입니다. 사용방법 UE_LOG(LogTemp, Warning, TEXT("Hello World")); 앞에 순서부터 로그 카테고리, 로그 상세 수준 ,로그 내용이다. 로그 상세 Fatal 로깅이 비활성화된 경우에도 항상 치명적인 오류를 콘솔 및 로그 파일에 출력한 후 크래시를 발생시킵니다. Error 오류를 콘솔 및 로그 파일에 출력합니다. 커맨드릿과 에디터가 오류를 수집하고 보고합니다. 오류 메시지의 결과로 커맨드릿 실패가 발생합니다. Warni..

UPROPERTY() 매크로는 UE가 새 클래스, 함수, 변수를 인식하게 합니다. 이러한 매크로는 엔진이 수집하는 가비지입니다. 매크로를 지정할 때 언리얼 에디터 내에서 편집하고 표시할 수 있습니다. 여기서 가비지란? 가비지컬렉션 : 가비지 컬렉션이 발생하면, 엔진은 루트 세트부터 시작해서 알려진 UObject 레퍼런스 트리를 검색하여 참조된 오브젝트를 전부 추적할 수 있습니다. 참조되지 않은 오브젝트, 즉 트리 검색에서 찾지 못한 것들은 더이상 필요치 않은 오브젝트라 가정하고 제거합니다. 즉 멤버 변수가 더 이상 사용되지 않으면 할당된 메모리를 자동으로 해제 해주는 기능을 한다. UPROPERTY() 사용법은 공식문서에 따르면 아래와 같이 사용한다고 나온다. 프로퍼티 지정자 엔진 및 에디터의 다양한 면..
지정된 클래스의 월드에서 모든 액터를 찾습니다. 매개변수 ActorClass 찾을 액터의 클래스입니다. 지정해야 합니다. 그렇지 않으면 결과 배열이 비어 있습니다. OutActors 지정된 클래스의 액터 출력 배열입니다.

스테이트머신에서 조건 걸때 쓰는 함수 < 0.5는 애니메이션 진행률이 50프로 넘었으면이다. 그럼 < 0.1은 애니메이션 진행률이 90프로 넘었으면이다.
Montage가 동일한 Anim Group에 있기 때문에 문제가 발생한 것 같습니다. 그리고 우리는 이 두 가지를 동시에 플레이할 수 없습니다(무기를 발사하고 죽는 것은 거의 동시에 발생합니다). 몽타주를 다른 애님 그룹에 넣는다면. 그런 다음 모든 것이 잘 작동합니다. 따라서 Montage로 이동하여 Anim Slot Manager에서 이 그룹 내에 새 그룹과 슬롯을 만듭니다. 이 새 그룹 및 슬롯을 몽타주에 할당하십시오. 애니메이션 청사진에서 이전 CharacterDeath-slot을 이 새로운 Death-slot으로 교체합니다.
RotateAngleAxis( const float AngleDeg, const FVector & Axis) AngleDeg 회전할 각도(도 단위). Axis 회전할 축입니다. ex const FVector MeshForward = GetItemMesh()->GetForwardVector(); const FVector MeshRight = GetItemMesh()->GetRightVector(); //앞축 방향으로 -20 회전시킴 FVector ImpulseDirection = MeshRight.RotateAngleAxis(-20.f, MeshForward); //z축 기준으로 30도 회전 즉 오른쪽방향으로 횐전함 ImpulseDirection = ImpulseDirection.RotateAngleAxi..
함수 DetachFromComponent(); // 컴포넌트를 분리 시켜줌 ex FDetachmentTransformRules DetachmentTransformRules(EDetachmentRule::KeepWorld, true); EquipeedWeapon->GetItemMesh()->DetachFromComponent(DetachmentTransformRules); AttachActor // 액터를 붙여줌 //무기를 오른쪽 소켓에 붙임 ex //핸드 소켓 얻기 const USkeletalMeshSocket* HandSocket = GetMesh()->GetSocketByName(FName("RightHandSocket")); if (HandSocket) { //무기를 오른쪽 소켓에 붙임 HandSo..