ToyProject
[언리얼엔진 5] 26. Spear Attack (+ Bow)
검, 활을 이어서 창을 던지는 공격을 구현할 것이다. 창을 던지는 공격을 구현해보니 활에서 나가는 파티클이 창에거 더 어울리는 것이다. 그래서 창 공격을 활 이펙트로 대체하고 활 공격의 이펙트, 기능을 바꾸었다. 일단 노티파이를 서로 바꾸어주는 작업을 했다. 파티클에 오버랩된 적에게 데미지를 부여하기로 하였다. 하지만 작은 문제가 발생한다. 이동하는 파티클이다보니 오버랩이 중첩되어 나타나 데미지가 여러번 적용되는 현상이 발견된다. 배열을 사용하여 쉽게 해결하였다. 창은 짧은 사거리로 하나의 대상에게 강력한 공격을, 활은 긴 사거리로 다수의 대상에게 약한 공격을 가하는 방식으로 변경할 예정이다.
[언리얼엔진 5] 25. Save Permenent Variable
게임을 하면서 얻은 추가 플레이어 스탯들은 죽은 뒤에 모두 초기화될 것이다. 그래야 새로운 게임을 다시 플레이할 수 있으니. 하지만 죽어도 계속해서 저장되어야 하는 변수들도 있을 것이다. 예를 들어 죽어서 얻은 게임재화나 재화로 얻은 어떤 것들은 게임을 나가도, 레벨이 바뀌어도 계속해서 저장되고 저장된 값을 계속해서 추적할 수 있어야 한다. 그렇기에 Save블루프린트를 두개로 나누었다. 죽으면 사라지는 변수들은 Player에, 영구적인 변수들은 Gamemode에 관리하여 쉽게 접근할 수있다. 또한 Lobby레벨 즉 초기 레벨에 오면 초기화된 변수들을 저장할 것이다. Save Permenet Variable은 영구적인 변수가 변경될 때마다 실행시켜준다. 예를들어 재화로 펫을 해금했다면 펫이 해금되었다는 사..
[언리얼엔진 5] 24. Select Pet Level
로그라이크 게임의 영구적 죽음의 특징을 가지고 있기 때문에 죽어도 다회차 플레이에 혜택을 주는 시스템을 가져야 한다. 특정 조건으로 펫을 해금하면 펫을 얻을 수 있는 레벨에서 랜덤하게 등장할 수 있도록 구현할 것이다. 위 액터를 상속받아서 모든 펫의 종류를 만들어 주었다. 이유는 많은데 가장 큰 이유는 배열에 모든 종류의 펫을 담기 위해서는 하나의 액터에서 상속받아야 하기 때문이다.
[언리얼엔진 5] 23. Duck Pet Class
이어서 귀여운 오리 펫을 추가해보았다. 오리는 조금 특이하게 랜덤성을 가지는 능력을 부여해보았다. 일정시간마다 폭죽을 발사해 폭죽의 형태, 색에 따라 다른 능력을 발휘하는 식으로 말이다. 폭죽 파티클은 두개로 나뉜다. 쏘아 올려지는 폭죽, 터지는 폭죽이 있으니 다른 플립북으로 제작해주었다. 파랑색 폭죽은 모든 적에게 일정량의 데미지를 초록색 폭죽은 플레이어에게 일정량의 힐을 노랑색 폭죽은 적에게 랜덤한 디버프를 부여한다. 낮은 확률로 폭죽이 크게 터지며 효과가 대폭 증가한다. 쿨타임 및 세부 능력은 이후에 조정해볼 것이다.
[언리얼엔진 5] 22. Hit Particle
화려하게 공격하는 것은 좋다만 공격대상이 아프게 맞아야지 타격감이 더 좋을 것이다. 데미지를 입을 때 히트 파티클을 생성해주었다. 이쁘고 멋진 파티클은 아껴두고 나중에 사용할 예정이다.
[언리얼엔진 5] 21. Crab Pet Class
산타펫에 이어서 귀여운 게까지 구현해보았다. 게(crab)은 몬스터에게 거품을 묻혀 죽을 때까지 데미지를 준다. 이를 구현하기 위해서는 요구되는 사항이다. - 거품이 묻은 몬스터가 죽으면 거품도 사라진다. - 거품이 묻은 몬스터는 지속적으로 데미지가 가해진다. - 이미 거품이 묻은 몬스터에게는 또다시 거품을 뭍히지 않는다. 구현 끝! 공격력, 쿨타임, 부가기능도 바로바로 추가할 수 있다.
[언리얼엔진 5] 20. Santa Pet Class
몬스터를 느리게 하는 기능을 추가해볼까 해서 slow함수를 만들었다. 지금까지 공격기능만 탑재된 펫을 만들어 보았으니 적을 느리게 만드는 펫을 만들어 보았다. 지속적으로 적을 느리게 만드는 장판을 생성하고 플레이어를 따라다니게 만들었다. 라이트닝펫과 비슷하게 spanw actor of class 노드로 장판액터를 생성해주었다. 느려지게만 하면 밋밋할 수 있으니 느려진 적들은 파란색을 띄게 하고싶었다. Create dynamic MI 노드를 통해 머티리얼 인스턴스를 변경해주었다. 구현 끝!