전체 글

전체 글

    [Unreal] 엔진에서 제공하는 데미지 라이브러리

    데미지를 주는 함수의 종류 ApplyDamage : 기본적인 데미지 함수. ApplyPointDamage : 데미지를 주는 위치의 정보도 얻어올 수 있는 데미지 함수. (어디서 데미지를 주었는지.) ApplyRadialDamage : 범위 데미지를 줄 때 사용. (Origin으로부터 Radius만큼 데미지를 뿌린다.라는 느낌.) 데미지를 받는 함수의 종류 블루프린트 : AnyDamage 노드, PointDamage 노드, RadialDamage 노드. (쓰기 쉬우라고 구분되어 있음.) C++ : Actor 클래스의 TakeDamage 함수 오버라이딩. (함수 내에서 구분해서 처리함.) float ACPP_Player::TakeDamage(float DamageAmount, FDamageEvent cons..

    [Unreal] 미니맵 및 캐릭터 위치 표시

    화살표 스프라이트 세팅 우선 화살표 스프라이트를 준비해준다, 구글에서 대충 이미지를 다운로드 받아 폴더에 드래그 앤 드롭해주면 Texture 형태로 로딩될텐데 그 후 우클릭 > Paper2D > Sprite 눌러서 생성해준 후 아래 부분을 세팅한다. 세 가지의 컴포넌트가 필요하다 SpringArmComponent PaperSpriteComponent USceneCaptureComponent2D C++로 추가해줬다 .h 파일에 추가 UPROPERTY(EditAnywhere, Category = Minimap) USpringArmComponent* SpringArm; UPROPERTY(EditAnywhere, Category = Minimap) USceneCaptureComponent2D* SceneCapt..

    [C++] 배열을 함수의 매개변수로 사용 시 주의점

    Main함수로부터 scores[5] 배열을 넘겨받아 배열의 원소를 출력하는 PrintScore 함수를 살펴보자. void PrintScore(int scores[5], int size) { cout

    [Unreal] Programming Subsystem (프로그래밍 서브시스템)

    1. 서브시스템 여기서 GameInstance 서브시스템을 커스터마이징했을때, 커스터마이징한 서브시스템의 수명은 class UMyGameSubsystem : public UGameInstanceSubsystem 위 예제 코드처럼 베이스 클래스에서 파생된 클래스를 생성하면 다음 스텝으로 수명이 관리된다. UGameInstance 생성 이후, UMyGameSubsystem 인스턴스 역시 생성한다. UGameInstance 초기화시, UMyGameSubsystem 인스턴스에서 Initialize()가 호출된다. UGameInstance 종료시, UMyGameSubsystem 인스턴스에서 Deinitialize()가 호출된다. Deinitialize()가 호출된 시점에서 UMyGameSubsystem 인스턴스에..

    C++ 빌드 진행 과정

    C++에서 작성한 소스코드를 실행 가능한 실행 파일로 변환하기 위해서는, 일련의 4단계를 따른다. 먼저 #include / #define 같은 전처리기 매크로들을 처리하는 전처리( Preprocessing ) 단계 각각의 소스 파일을 어셈블리 명령어로 변환하는 컴파일( Compile ) 단계 어셈블리 코드들을 실제 기계어로 이루어진 목적 코드( Object File ) 로 변환하는 어셈블( Assemble ) 단계 마지막으로 각각의 목적 코드들을 한데 모아서 하나의 실행 파일로 만들어주는 링킹( Linking )단계로 나누어 진다. 대부분 전처리 단계 - 컴파일 단계 - 어셈블 단계를 모두 합쳐 컴파일 단계 하나로 생각해도 무방하다. 즉, 많은 경우 어셈블 명령어 같은 파일을 생성하지 않고 바로 목적 코..

    [C++] 삼항 트리를 이중 연결된 목록으로 변환

    삼항 트리가 주어지면, 제자리에서 이중 연결된 목록으로 변환한다. 삼항 트리는 각 노드가 왼쪽, 중간, 오른쪽으로 구분되는 세 개의 자식 노드를 갖는 트리 데이터 구조다. 변환은 삼항 트리 노드의 왼쪽 자식 포인터가 이중 연결된 목록 노드의 이전 포인터 역할을 하고 오른쪽 자식 포인터가 이중 연결된 목록 노드의 다음 포인터 역할을 하고 중간 트리 노드가 자식 포인터는 아무 것도 가리키지 않아야 한다. 변환은 이중 연결된 목록의 노드에 추가 메모리를 할당하지 않고 삼항 트리 노드 포인터만 교환하여 수행해야 한다. Input: Ternary Tree 1 / | \ / | \ / | \ 2 9 12 / | \ / \ | \ 3 6 8 10 11 13 16 | \ / \ | 4 7 14 15 17 \ 5 Out..

    [C++] 두 배열을 비교할 수 있는 함수 equal

    1. equal C++의 알고리즘 관련 여러 함수들이 담긴 헤더 에서의 equal 함수는 다음과 같은 두 가지 구조를 가진다. 1] equality - bool equal (InputIterator first1, InputIterator last1, InputIterator first2) 2] predicate - bool equal (InputIterator1 first1, InputIterator last1, InputIterator first2, BinaryPredicate pred) equal은 쓰임에 따라 3개 혹은 4개의 인자를 받는다. InputIterator first1 : 비교할 첫 번째 배열이나 어떤 container 자료형의 시작부 혹은 포인터 InputIterator last1: 비..

    [C++] Palindrome (팰린드롬 회문)에 대한 모든것

    1. 팰린드롬이란? 팰린드롬(Palindrome, 회문)은 처음부터 끝까지 거꾸로 읽어도 똑같이 읽히는 수 또는 문자열을 의미한다. 예를 들면, "racecar"나 "abcdcba", 한글로 하면 "수박이박수", "다시합창합시다" 정도가 되겠다. 이 팰린드롬을 판별하는 것은 여러 방법이 있다. 2. 팰린드롬 판별 1 - Naive 팰린드롬을 판별하려면, 처음 글자부터 마지막 글자까지 거꾸로 셌을 때 같은 수거나 문자열이면 가능하다. 입력이 문자열일 경우 다음과 같이 함수를 작성할 수 있다. #include using namespace std; bool is_palindrome(string str) { bool flag = true; for (int i = 0; i < str.size(); i++) { /..

    [Unreal] Level Blueprint 를 C++로 접근하기

    기본적으로 Level Blueprint는 ALevelScriptActor, 즉 Actor 형식이다. 이를 상속받아 새로운 Level Actor를 생성한다. 자신의 LevelScriptActor에서 추가한 함수가, Level Blueprint에서도 보일 수 있게 수정할 수 있다. 다음은 Actor들의 Reference를 받아 Destroy 시키는 DestroyActors 함수이다. 자신의 LevelScriptActor에서 작성한 함수가 Level Blueprint에서 보이려면 UFUNCTION과 Specifier 작성 필수이다. 눈에 띄는건 DestroyActors의 UPARAM(ref) 이라는 매크로인데, 이는 함수가 받는 인자가 Blueprint 상에서는 왼쪽 에서 와야 한다는 뜻이다. ( -> 즉 U..

    [Unreal] 언리얼 비동기 애셋 로딩 (Asynchronous Loading)

    FSoftObjectPath 와 TSoftObjectPtr 모든 사용할 때마다 로드하는 것이 아니라, 애셋을 전부 로딩하지 않으면서 로딩하고 싶은 애셋을 미리 준비시켜 놓고 싶다면 어떨까? 그럴 경우, FSoftObjectPath 와 TSofrObjectPtr 를 이용하면 된다. FSoftObjectPath 는 실제로 애셋의 경로를 FName 으로 저장하고 있는 구조체이며, TSoftObjectPtr 는 FSoftObjectPath 를 wrapping 한 TWeakObjectPtr 이다. TSoftObjectPtr.Get( ) 으로 참조된 애셋을 가져올 수 있으며, FSoftObjectPath 로 애셋을 로딩할 수 있다. The Asset Registry and Object Libraries 애셋 레지스..