Category
[언리얼엔진 5] 8. Particle and Collision Attack
공격을 구현하긴 했으나 다양한 공격을 만들기 위해서는 파티클을 추가해야 했다. 다양한 파티클을 추가하면서 공격범위를 지정하는 것이 어려워지기 시작했다. 다양한 공격범위를 다루기 위해서는 박스 디버깅이 아닌 콜리전을 사용해야 했다. 공격 시 파티클이 생성되고 이 파티클의 콜리전에 들어온 Actor들에게 데미지를 준다면 이후 관리도 편해질 것이다. Spawn Actor from class 함수로 파티클을 생성했다. (파티클 액터를 미리 만들어줌) 이후 파티클 액터의 콜리전을 가져와 Component Overlap Actors로 범위 안에 들어온 액터를 감지한다. 이때 Actors to Ignore에 player를 넣어주어 자신에게 데미지를 주지 않게 한다. 이렇게 데미지 를 주는 시스템도 개선하였다. 이후 ..
[언리얼엔진 5] 7. Current Player State + Error Handling
이전 플레이어 스테이트를 따루 두지 않고 boolean으로 행동을 통제했다. 하지만 이렇게 진행하니 boolean타입을 난발하고 여러 문제가 발생하기 시작했다. 이상태에서 또 다른 행동을 추가한다면 큰 사고다.. 그렇기에 플레이어에게 현재 상태를 나타내는 변수를 생성해 이 변수로 행동을 통제하기로 하였다. Player state는 여러 현재 상태를 나타낼 수 있게 열거형(Enum)으로 생성하여 여러가지 State를 나타내었다. 계속 여러 행동을 추가할텐데 이제는 열거형변수에 추가만 하면 플레이어의 상태를 쉽게 나타낼 수 있게 되었다! 하지만 하나의 문제가 생겼다. 공격키를 연타하면 어느순간 플레이어가 멈추는 현상이 발생했다. 이때 구르기로 상황을 탈출할 수는 있었지만 불편하고 오류임이 확실하기에 원인을 ..
[언리얼엔진 5] PaperZD Spite 액션 (+Paper2D)
다음과 같은 sprite를 어떻게 다룰 수 있을까? sprite의 편의기능이 부족한 기존 언리얼엔진을 위해 PaperZD는 다양한 액션 기능을 지원한다. 일단 언리얼엔진의 paper2d를 사용해 sprite를 플립북(flipbook)으로 변환시켜주어야 한다. 일단 저 png파일을 언리얼엔진에서 스프라이트 액션 -> 페이퍼2D 텍스쳐 세팅 적용을 눌러준다. 그 후 스프라이트 추출을 눌러준다. 그후 추출된 스프라이트들을 묶어 플립북을 만들어 준다. 이렇게 만들어진 Flipbook을 사용하기 편하게 PaperZD에서 지원하는 AnimSource를 통해 관리할 수 있다. 이제 애님시퀀스가 자동으로 생성되고 PaperZDAnimBP에서 간편하게 사용이 가능하다. PaperZD는 가벼운 내용이기에 여기까지만 다루겠..
[언리얼엔진 5] PaperZD Jump to Node
PaperZD PaperZD는 2D 프로젝트에 대한 Unreal Engine의 애니메이션 지원 부족에 대한 결정적인 해결책으로, 복잡하고 간단한 2D 프로젝트를 관리하는 데 필요한 모든 기능을 사용하여 자신만의 애니메이션 Blueprint를 쉽게 만들 수 있다. PaperZd에서 지원하는 Jump to Node 함수는 애니메이션 관리를 한층 수월하게 해주는 고마운 존재이다. 사용방법도 아주 간단한데 Jump Name에 호출하고 싶은 JumpNode의 이름을 적으면 된다. 예를들어 Jump to Node를 통해 SlideJUMP가 호출되고 Slide라는 애니메이션 스테이트가 실행된다. 원하는 동작이 많아도 Jump to Node로 제어할 수 있다는 것이다. Slide 스테이트 애님 진행률이 98퍼가 넘으면..
[언리얼엔진 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로 구현해주면 간단한 동작은 전부 끝이난다. 이제 플레이어도 공격할 수 있다!