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

고우진님의 프로필 이미지
고우진

작성한 질문수

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

다른형식의 근접공격에 대해 질문할것이 있습니다.

작성

·

84

0

다크소울과 몬스터헌터 같은 게임의 근접공격 구현은 스킬의 액션에 새로운 액션을 만든 다음 피격 판정이 있는 무기에 콜라이더를 넣어준 다음 기존의 투사체 공격에 있는 소켓을 이용해서 구현하면 될까요

 

답변 2

0

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

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

몬스터 헌터나 다크 소울의 근접 액션은 정교하게 만들어져있기 때문에 제가 확답 드리긴 어렵구요, 간단하게는 무기에 Collider를 넣고 TargetSearcher가 무기 Collider에 닿은 Target들을 가져오게 만들면 되지만, 몬스터 헌터나 다크 소울처럼 정교하게 만들어진 전투는 단순한 Skill System만으로는 무리고 함께 전투를 제어할 Combat System이 만들어져 있어야합니다. 물론 Skill System만으로도 만들려면 만들 순 있겠지만 좀 하드 코딩이 되겠죠.

감사합니다.

고우진님의 프로필 이미지
고우진
질문자

그러면 해당 강의를 최대한 활용 하는 방법으로는 전투시스템을 개별적으로 개발한 후 스텟시스템, 패시브 스킬, 자신에게 주는 버프, 원거리 공격이 있을까요

ex)몬스터 헌터의 원거리 무기군: 탄창의 스텟으로 변화(소모, 재장전에 활용), 공격은 쿨타임으로 공격속도로 구현

이런식으로 구현해도 원거리 전투의 경우에는 다른 전투 시스템과 비교해서 최적화 괜찮은지 여쭤보고 싶습니다

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

어떻게 만드냐에 따라 다르겠지만 말씀하신대로 몬헌을 만든다고하면 음식(=버프)이나 태도의 투구깨기 같은 특정한 공격들, 아이템 시스템(=탄창)과 연동한 원거리 무기, 몬스터들의 공격에 활용할 수 있을 것 같습니다. 적절한 컴뱃 시스템(=제어 시스템)을 만든다면 플레이어의 공격들도 모두 스킬 시스템으로 만들 수 있구요, 그럼 콤보에 따라 다양한 추가 효과를 만들어 낼 수 있겠죠(=수렵피리)

누군가는 단 100줄의 코드로도 프레임 드랍을 만들 수 있는게 최적화라 간단히 말씀드릴 수 있는 부분은 아니구요, AI와 보안과 관련된 스크립트가 아니고서야 스크립트만으로 최적화 문제가 생기는 경우는 못본 것 같습니다. 특히 요즘처럼 CPU 성능이 좋은 시대에는 작정하고 잘못 짜는게 아닌 이상 스크립트만으로 최적화 문제가 생기기는 더더욱 어렵구요.

0

안녕하세요, 인프런 AI 인턴입니다. 고우진님.

다크소울과 몬스터헌터 같은 게임의 근접공격을 구현하려면 몇 가지 요소를 고려하여 액션을 설계해야 합니다. 무기 콜라이더를 사용하는 방법은 적절한 접근입니다. 아래에 관련된 유사한 질문들을 참고할 수 있는 링크와 간단한 요약을 제공드리겠습니다.

관련 질문 URL:

  1. 적 스킬 관련 질문

    • 내용 요약: Projectile 스킬을 사용하는 적의 스킬 구현 방법에 대한 논의.
    • 이미지:
      image

    스킬 액션에 새롭게 콜라이더를 이용한 피격 판정을 결합할 수 있는 방법을 설명합니다.

  2. 스킬 구현 질문

    • 내용 요약: 그레이브즈 Q와 같은 스킬 구현을 위한 조언.
    • 이미지:
      image

    스킬의 다양한 요소를 모듈화하여 Projectile과 SkillObject를 활용하는 방법에 대해 설명합니다.

간단한 개요:

근접공격의 기본 개념:
1. 무기 콜라이더 설정:
- 무기 모델의 콜라이더를 사용하여 피격 판정을 처리합니다.
- 애니메이션 이벤트나 타이머를 활용하여 콜라이더 활성화/비활성화 시점을 조절합니다.

  1. 애니메이션 연동:

    • 애니메이션 이벤트를 활용하여 공격 시점에 맞추어 콜라이더를 활성화합니다.
    • 공격 범위와 각도를 기반으로 타겟을 탐지합니다.
  2. 스킬 액션 커스터마이징:

    • 새로운 액션 클래스를 만들어 무기 콜라이더의 활성화/비활성화 로직을 추가합니다.
    • 기존의 투사체 스킬과 유사하게 소켓을 이용하여 적중 시 효과를 트리거할 수 있게 설계합니다.

예를 들어, 근접공격 스킬의 구현은 다음과 같은 스크립트를 사용할 수 있습니다:

public class MeleeAttackAction : SkillAction
{
    public Collider weaponCollider;
    
    public void StartAttack()
    {
        weaponCollider.enabled = true;
        // 필요시 추가 로직 (피격 판정) 작성
    }

    public void EndAttack()
    {
        weaponCollider.enabled = false;
    }
}

이러한 방식으로 구현하면 근접 공격과 같은 다양한 스킬을 손쉽게 관리할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

고우진님의 프로필 이미지
고우진

작성한 질문수

질문하기