Category

    [언리얼엔진 5] Cast to 캐스팅(형변환)

    간단한 예를 들어보자.친한 친구 철수에게 할말이 있어 전화를 건다. 그러고 누가 전화를 받았는데 제일 먼저 무엇을 할 것인가? 용건부터 말하지 않고 "여보세요?" "철수야" 와 같이 말할 것이다. 철수가 맞으면 이제야 할 말을 한다. 이것이 캐스팅이다.기타 작업을 하기전 그 대상이 맞는지 확인을 한다. 캐스팅에 성공한다면 커뮤니케이션할 준비가 된 것이다. sender(송신자)는 자신의 데이터를 보낼 수 있고 수신자(receiver)는 데이터를 받거나 직접기능을 호출할 수도 있다.성공하면 Pawn 클래스와 커뮤니케이션할 준비가 된것이다. As Pawn을 통해 Pawn에 접근할 수 있게 된 것이다. 즉 Pawn클래스의 변수나 함수에 접근할 수 있다.다음은 PaperZDAnimNotify에서 캐스팅하는 예시이..

    [언리얼엔진 5] 6. FloatingDamage and Critical

    공격기능이 추가 되었으니 가한 데미지를 표기해주어야 한다. 화면에 보여주기 위해 Widget Blueprint를 이용한다. 데미지를 받은 액터에서 함수를 호출하고 싶기에 다음과 같이 구성해주었다. 고정된 텍스트만 띄우면 밋밋할 수 있으니 텍스트에도 간단한 애니메이션을 추가해주었다. 위젯을 만드는 겸 크리티컬 시스템도 만들기로 하였다. 플레이어에서 크리티컬 확률과 크리티컬 데미지를 조정할 수 있고 애님노티파이에 추가하였다. 순조로운 개발중 처음으로 문제가 발생하였다. 크리티컬이 발생하면 Damage Type Class로 Critical Type 오브젝트 레퍼런스를 넘겨주었다. 그렇기에 데미지를 받는 액터 Any Damage 이벤트의 Damage type 핀으로 ==을 사용하여 구별하려고 하였다. 하지만 크..

    [언리얼엔진 5] 5. Player Attack

    플레이어도 공격을 할 수 있어야 한다! 간단하게 공격 모션을 구현해주고 이전과 같이 공격박스를 생성한다. 공격하는 동작과 공격박스를 구현하였으니 이제 적이 공격 받을 때 히드모션과 함께 멈추게 할 것이다. 하지만 매 공격마다 멈추면 재미 없으니 몬스터에게 각각의 저항력을 부여할 것이다. 이 저항력이 높을 수록 밀려나지 않을 확률이 높아진다. 추가로 죽는 모션까지 JumptoNode로 구현해주면 간단한 동작은 전부 끝이난다. 이제 플레이어도 공격할 수 있다!

    [언리얼엔진 5] 4. AI Attack

    이번에는 다음과 같은 동작을 구현해볼 것이다. 적이 플레이어에게 걸어오고 일정 거리에 들어오면 공격을 한다. DoOnce (한 번 실행) 노드는 이름 그대로 실행 신호를 한 번만 발동시킨다. 그 시점부터는 Reset 입력에 신호를 별도로 주지 않는 이상 실행 신호를 내보내지 않는다. 공격 쿨타임을 설정해주고 DoOnce 노드를 리셋해준다. 공격모션이 있다면 플레이어에게 직접 데미지를 주는 기능을 추가해야 한다.이때 AnimNotify를 사용하면 원하는 시점에 기능을 쉽게 추가할 수 있다. Draw Debug Box는 해당 위치에 해당 크기만큼 박스를 그려주는 함수이다. 이전에 만든 노티파이를 원하는 시점에 맞추어 추가한다. 그 시점에 노티파이가 호출되어 아래와 같이 공격박스를 만들고 데미지를 줄 수 있다..

    [언리얼엔진 5] 3. AI Movement

    일단 플레이어를 추적하여 따라가는 기본적인 AI 움직임을 구현하고 싶었다. 이를 지원하는 가장 기본적인 함수는 AI Move To 이다. 이때 레벨에 NavMeshBoundsVolume을 추가해주어야 한다. 네비매쉬는 특정 범위에 AI 네비게이션을 제공한다. P를 누르면 네비매쉬의 범위를 보여준다. 적 또한 2D 그래픽이기 때문에 회전량을 고정시켜주어야 할 필요가 있다. AI가 바라보는 방향은 플레이어를 바라보는 방향이기에 AI의 위치와 플레이어의 위치를 상대적으로 비교하여 회전량을 고정시켜 주었다. AI의 간단한 움직임을 구현해주었으니 다음은 공격 액션을 구현하겠다.

    [언리얼엔진 5] 2. Movement

    플레이어는 2D 픽셀그래픽이지만 3D배경에 존재하기에 양옆뿐만 아니라 앞뒤로도 움직임을 구현해주어야 한다. Add Movement Input으로 움직임을 추가해주면 발생하는 문제가 있다. Pawn들이 2d이기때문에 앞뒤로 움직이게 되면 회전하게 되고 캐릭터가 보이지 않게 된다. 그렇기에 바라보는 방향에 따라 회전량을 고정시켜주어야 했다. 걸어다니기만 하면 아쉬우니 구르기도 추가해주었다. PaperZD가 지원하는 Jump to Node 함수로 쉽게 구현할 수 있었다. 이렇게 간단한 움직임을 구현하였다. 다음은 적의 움직임 즉 AI의 간단한 움직임을 구현할 것이다.

    [언리얼엔진 5] 1. PaperZD

    PaperZD PaperZD는 2D 프로젝트에 대한 Unreal Engine의 애니메이션 지원 부족에 대한 결정적인 해결책으로, 복잡하고 간단한 2D 프로젝트를 관리하는 데 필요한 모든 기능을 사용하여 자신만의 애니메이션 Blueprint를 쉽게 만들 수 있다. 하나의 Pawn을 구성하기 위해서는 다음과 같은 블루프린트 클래스가 필요하다. PaperZDCharacter AnimationSource PaperZD animBP Animation Sequences Animaion Notify 이뿐만 아니라 여러 Sprite 편의기능, 액션기능을 지원한다. 모두 PaperZD가 지원하는 블루프린트 클래스들이기에 언리얼엔진을 통해 2D 다루려면 위와 같은 플러그인의 사용이 필요하다. PaperZDCharacter..