ToyProject
[언리얼엔진 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..
[언리얼엔진 5] 0. Preparatory
언리얼엔진을 처음으로 접한 것은 2021년말, 간단한 공 굴리기 게임을 만들어 보았다. 컴퓨터공학과에 진학하기 전 게임개발에 흥미가 있어 언리얼엔진 블루프린트를 배우며 여러 게임을 구현해보고 싶었다. 다양한 장르의 게임을 만들어 보았지만 모두 완성도 없고 c++의 개념을 몰랐기에 응용이 불가능했었다. 책이나 영상을 통해 배운 함수나 개념만을 사용해서 만들었기에 결국 내가 원하는 기능을 전부 만드는 것을 힘들었다. 컴퓨터공학과에 진학 후 1학기 동안 텀프로젝트를 진행하여 파이썬의 pygame 모듈로 간단한 플랫폼 게임을 제작해보았다. 클래스의 개념을 알면서 게임에서 객체들을 어떻게 다루어야 할지 감이 잡히기 시작했다. 한 학기를 마친 후 바로 C++공부를 하고 기존의 언리얼엔진 프로젝트를 보니 완전히 다르..