This document is about: QUANTUM 2
SWITCH TO

무기

개오

WeaponsSystem은 발사체 발사 또는 일정한 속도로 발사 행동을 반복하는 방식을 제공합니다.

무기 설정 Setup

모든 무기는 Weapons 컴포넌트와 WeaponController로부터 상속받은 특수 컨트롤러가 있는 자체 엔티티입니다. 이 설정을 통해 런타임에 플레이어 엔티티에서 무기를 추가하거나 제거할 수 있습니다.

weapon setup example
발사체 무기 속성 예제.

WeaponController

모든 무기 컨트롤러는 WeaponController 클래스에서 상속되므로 다음과 같은 속성을 사용할 수 있습니다.

  • FireOffset: 손에서 무기 발사/발사체가 생성되는 지점까지의 상대 오프셋입니다.
  • MinRange: 자동 발사 시작을 위한 최소 거리
  • MaxRange: 자동 발사 시작을 위한 목표물의 최대 거리
  • CriticalChance: 두 배 타격을 위한 비율 변화
  • MinRangeAutoFireAngle: 목표물로부터의 거리가 MinRange와 같을 때 자동으로 사격을 시작하기 위한 플레이어 조준 방향의 최대 각도입니다.
  • MaxRangeAutoFireAngle: 목표물로부터의 거리가 MaxRange와 같을 때 자동으로 사격을 시작하기 위한 플레이어 조준 방향의 최대 각도입니다.
  • AutoFireAngleBendFactor: MinRangeAutoFireAngleMaxRangeAutoFireAngle 사이의 AutoFire 각도의 보간 선형성을 제어합니다.

실행 흐름

WeaponsSystem은 게임 내 WeaponsDesires , Weapons 컴포넌트, 다양한 무기 컨트롤러의 조정을 조율합니다. 다음 그림은 실행 흐름과 서로 다른 이동 부분 간의 인터페이스에 사용되는 API를 보여줍니다.

weapons
Weapons Ochestration.

AutoFire

다음 다이어그램에서는 WeaponController 속성과 AutoFire 사이의 관계를 간단하게 하향식 관점에서 설명합니다.

autofire
WeaponController 속성과 AutoFire 관계.

MinRangeMaxRange 사이의 AutoFire 동작은 AutoFireAngleBendFactor 속성에 의해 제어됩니다. 밴드 팩터가 높을수록 AutoFire 각도가 MinRangeAutoFireAngle에서 MaxRangeAutoFireAngle로 빠르게 보간됩니다. 다시 말해 AutoFire 영역이 좁혀지고 있다는 뜻입니다.

autofire angle bend factor
AutoFire 각도 밴드 팩터.

포함된 컨트롤러

FPS 템플릿은 두 개의 상세한 예제에 WeaponController를 구현합니다:

  • ProjectileWeaponController 그리고,
  • MeleeWeaponController.

ProjectileWeapon

ProjectileWeaponController는 발사체를 쏘는 모든 무기에 사용할 수 있습니다. 동작은 속성이 조정되는 방식과 Projectile 속성에서 참조되는 발사체에 따라 달라집니다.

  • Projectile: 발사체 프로토 타입의 참조
  • ProjectileCount: 단일 무기 사용 시에 발사되는 발사체 개수
  • MagazineAmmo: 연발 무기의 발사체 개수
  • WeaponAmmo: 무기가 갖고 있을 수 있는 총 발사체 개수
  • UnlimitedAmmo: 무제한 발사체에 대해서 true로 설정
  • Cadence: 분당 발사되는 발사체의 개수
  • ReloadDuration: 무기 재장전에 걸리는 시간
  • DispersionAngle: 각도로 각 축별의 발사 분산 각도

MeleeWeapon

MeleeWeaponController는 모든 근거리 무기에 사용할 수 있습니다. 간단한 근거리 피해 외에도 Effect 속성을 사용하여 추가 효과를 적용할 수 있습니다.

  • Effect: 밀리 효과 프로토타입의 참조
  • AttackDelay: 효과가 생성되기 전까지의 시간
  • Cooldown: 다음 공격 실행까지의 시간

새로운 무기 생성하기

다음은 FPS 템플릿에서 새로운 무기 를 생성하는 단계별 절차입니다.

  1. Quantum 솔루션에서, WeaponController에서 상속받은 새로운 MyWeaponController를 생성합니다.
  2. 컨트롤러에 직렬화 가능한 필드들을 추가합니다 (환경 구성).
  3. 필요시, MyWeapon 컴포넌트의 정의와 롤백 가능한 데이터와 같은 기타 구조체들의 정의를 포함하는 MyWeapon.qtn을 생성합니다.
  4. 필요시 기본 속성들을 오버라이드하고 컨트롤러에서 Initialize(), Deinitialize(), Update()Fire() 메소드를 구현합니다.
  5. 사용할 수 있는 컨트롤러 인터페이스를 구현합니다 (예, IAttributesProvider, ...).
  6. quantum.code 솔루션을 다시 컴파일합니다.
  7. 유니티에서, 빈 게임 오브젝트를 생성하고 자식 객체로 비주얼 컴포넌트 / 모델을 추가합니다.
  8. 게임 오브젝트에 Entity, EntityPrototype, EntityComponentControllerEntityComponentWeapon 스크립트를 추가합니다.
  9. Entity 컴포넌트에서 다음과 같이 설정합니다:
    • 무기가 항상 손에 스냅 되는 경우 Transform SynchronizationNone으로
    • 무기가 소유 엔티티 없이 존재할 수 없을 때 Require Ownertrue로 설정
  10. EntityComponentController 컴포넌트에서, WeaponController 드롭다운 메뉴에서 MyWeaponController를 선택하고 정의된 속성들을 채웁니다.
  11. EntityComponentWeapon에서 정의된 속성들을 채웁니다.
  12. 엔티티의 행동을 정의하기 위해서 다른 엔티티 컴포넌트들을 추가합니다 (예, EntityComponentMyWeapon, ...).
  13. 엔티티의 프리팹을 생성합니다 (선택).
  14. Quantum > Generate Asset Resources 메뉴를 통해 에셋 리소스 생성을 실행합니다.
  15. Quantum > Bake > Prefabs 메뉴에서 프리팹 베이킹 절차를 실행합니다.
  16. 이제 무기를 사용할 준비가 되었습니다 - 참조 엔티티 프로토타입.
Back to top