상호 작용

개요

상호 작용 객체는 플레이어가 상호 작용할 수 있는 씬 객체입니다. 상호 작용 과정은 플레이어가 Interaction 레이어를 가진 콜라이더를 가지고 있고 IInteraction 인터페이스를 구현하는 컴포넌트를 포함하는 객체를 목표로 할 때 트리거 됩니다.

노트: 간단한 상호 작용은 무기 컴포넌트에서 직접 처리됩니다.

메인 화면으로

아이템 상자

아이템 상자는 맵 주위에 흩어져 플레이어에게 무기, 수류탄, 탄약, 방패, 건강 팩, 제트 팩 연료를 제공합니다. 상자의 아이템은 플레이어가 상자를 열 때 생성되는 일반적인 픽업입니다. 아이템은 아이템 상자 프리팹에 지정된 확률을 기준으로 랜덤하게 선택됩니다. 이 상자는 시간이 지나면 자동으로 닫히고 쿨다운이 만료될 때까지 더 이상 열 수 없습니다.

Item Box

메인 화면으로

픽업

상호 작용으로 픽업할 수 있거나 플레이어가 픽업 버튼을 누르면 자동으로 픽업되는 아이템입니다. 현재 버전의 Fusion BR에는 두 가지 유형의 픽업이 있습니다. 아이템 상자에서 픽업하고 플레이어가 떨어뜨린 픽업(무기, 수류탄)입니다.

Pickup

메인 화면으로

무기 떨구기

Fusion BR에서는 플레이어가 무기를 땅에 떨어뜨릴 수 있습니다. 드롭은 상호 작용 키(F)를 누르고 있거나, 이미 차지하고 있는 슬롯과 일치하는 무기를 집어 들거나 플레이어가 죽으면 플레이어의 모든 무기를 드롭하는 방식으로 시작됩니다.

드롭이 시작되면 특별한 DynamicPickup 객체가 생성됩니다. DynamicPickup은 플레이어가 떨어뜨릴 수 있는 모든 객체의 래퍼 역할을 합니다. 여기에는 드롭에 대한 필수 설정(특히 NetworkRigidbody 컴포넌트)이 포함되어 있습니다. Fusion BR의 모든 무기는 별도의 네트워크 객체이기 때문에 게임 오브젝트 전체가 DynamicPickup으로 되어 세상에 버려집니다. 이렇게 하면 다른 플레이어가 무기를 집어 들 때 비주얼, 탄약 또는 기타 무기 상태와 같은 이전 소유자의 속성을 유지할 수 있습니다.

Weapon Drop

무기는 IDynamicPickupProvider 인터페이스를 통해 DynamicPickup 필수 정보를 제공합니다. 예를 들어 상호 작용 UI에 사용할 이름 및 설명 또는 낙하 전에 활성화하여 올바른 리기드 바디 동작을 보장하는 무기 콜라이더 입니다.

public interface IDynamicPickupProvider
{
    public string     Name                { get; }
    public string     Description         { get; }
    public Transform  InterpolationTarget { get; }
    public Collider   Collider            { get; }
    public float      DespawnTime         { get; }
}

새로운 소유자가 무기를 집어 들면 단순히 DynamicPickup에서 무기 물체를 풀고 무기 목록에 무기를 추가한 뒤 자신의 입력 권한을 무기에 부여합니다.

메인 화면으로

발걸음

발걸음 소리는 AgentFootsteps 컴포넌트에 의해 처리되며 완전히 계산됩니다(틱 단위로 정확한 애니메이션 추가 기능에는 애니메이션 이벤트가 지원되지 않습니다). 발 변환 위치 변경은 발이 실제로 땅에 닿은 시점을 감지하기 위해 간단히 점검됩니다. 터치가 감지되면 표면에 대한 정보를 얻기 위해 작은 레이캐스트가 발사됩니다. 표면 콜라이더 게임 객체에 할당된 유니티 태그는 서로 다른 표면 유형을 구별하는 데 사용됩니다.

public class FootstepSetup : ScriptableObject
{
    [SerializeField]
    private AudioSetup _fallbackWalkSound;
    [SerializeField]
    private AudioSetup _fallbackRunSound;
    [SerializeField]
    private FootstepData[] _footsteps;

    [Serializable]
    private class FootstepData
    {
        public string Tag;
        public AudioSetup SoundWalk;
        public AudioSetup SoundRun;
    }
}

모든 에이전트는 각 표면에 대해 재생해야 할 소리를 지정하는 지정된 발걸음 설정을 가질 수 있습니다. 발걸음 설정에는 걷기 또는 달리기를 위한 변형도 포함되어 있으므로 이동 속도에 따라 다른 소리 또는 다른 소리 크기를 얻을 수 있습니다.

노트: 현재 생성된 레벨에서는, 기본 표면 및 물 표면 소리만 필요합니다.


기술문서 TOP으로 돌아가기