인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

김아님님의 프로필 이미지

작성한 질문수

[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템

하나의 스킬 내에서 타겟, 이펙트가 여러번 바뀌게 하는 방법이 궁금합니다.

해결된 질문

작성

·

95

0

예를 들어 적 엔티티를 클릭하여 타겟으로 삼고 공격을 한 후, 다시 타겟 검색을 해서 주변의 아군을 치유하는 스킬이 있습니다.(또는 그냥 자기 자신을 치유)

이럴땐, 처음 타겟서칭때 SelectEntity방식으로 적을 찾는데, 이후 이어지는 발동 상황에서는 주변의 적을

positionSearch 방식으로 찾아야 해서 타겟 서칭 방법이 바뀌고, 또 적용해야하는 이펙트 또한 바뀌게 됩니다.

어떻게 보면 두 종류 이상의 스킬을 같이 사용하는 형태 같습니다.

 

precedingAction을 통해 구현하는건, 발동되는 효과가 3가지 이상일 경우도 있으므로 적절하지 않은 것 같습니다.

 

새로운 스테이트 머신을 만들어서 타겟서칭과 이펙트를 반복하게 만들 수도 있을것 같은데

제가 구현하고자 하는 방향이 턴제 형식이라서 굳이 스킬 스테이트 머신을 사용하지 않으려고 합니다.

 

제가 생각해본 방법은 effect 자체에 타겟서칭을 추가해서 순차적으로 이펙트를 실행함에 따라 매번 타겟 서칭을 새롭게 하는 방법이나,

skillData를 2차원 배열로 만들어서 각 레벨별로 각기 다른 효과와 이펙트를

저장하고, skillData를 순차적으로 실행하는 방법 정도입니다.

 

이러한 구조를 어떻게 구현하면 좋을지 질문하고 싶습니다.

답변 1

0

Developer G님의 프로필 이미지
Developer G
지식공유자

수강해주셔서 감사합니다.

비슷한 질문이 있었던지라 같은 답변을 드리겠습니다.
방법은 크게 두 가지가 있습니다.

1. ApplyCount를 확장

b843de6c-2ff8-4762-971c-ac953733a922.png.webp


이게 강의에서 만든 단일 설정의 Skill이구요,

 

1dca43df-5250-4587-893b-ca0d46921547.png.webp


이런 식으로 Action과 관련된 설정을 묶어서(구조체나 Class 배열) 현재 ApplyCount에 해당하는 설정을 가져와서 사용해주면 됩니다. ApplyCount가 많을 시에는 Level처럼 새로운 ApplyCount 설정이 있을 때까지 이전 ApplyCount 설정을 사용하는 형태로 만들어주시면 됩니다. 이미지에는 없지만 Action도 추가해주시면 ApplyCount에 따라서 완전히 다른 형태로 발동되는 Skill을 구현할 수 있습니다.

2. Skill들을 따로 만들어서 연결
Skill들을 따로 만들어서 변수로 연결시켜두고 Skill을 사용할 때마다 현재 Skill이 연결된 다음 Skill로 교체되게 만드는 방법이 있습니다.(지속 시간 안에 사용하지 않거나, 더 이상 연결된 스킬이 없다면 초기 Skill로 복귀)

단순히 Skill을 연이어 사용하고 싶다면 1번을, 아예 Casting이나 Charge, PrecedingAction도 새롭게 하고 싶다면 2번을 방식을 활용하면 되겠습니다.

감사합니다.