This document is about: FUSION 1
SWITCH TO

インタラクション

Level 4

概要

インタラクションオブジェクトは、プレイヤーがインタラクションできるシーンオブジェクトです。プレイヤーが Interaction レイヤーのコライダーを持ち、IInteraction インターフェースを実装したコンポーネントを含むオブジェクトを狙うと、インタラクションのプロセスが開始されます。

Note: 簡略化のため、インタラクションはWeaponsコンポーネントで直接処理されます。

アイテムボックス

アイテムボックスはマップ上に点在し、プレイヤーに武器、グレネード、弾薬、シールドパック、ヘルスパック、ジェットパックの燃料を提供します。ボックス内のアイテムは、プレイヤーによってボックスが開けられたときにスポーンされる通常のピックアップアイテムです。アイテムはアイテムボックスのプレハブで指定された確率に基づき、ランダムに選択されます。箱は時間が経つと自動的に閉じられ、クールダウンが切れるまでそれ以上開くことはできません。

item box

ピックアップ

インタラクションアクションで拾うことができるアイテム、またはプレイヤーがピックアップボタンを押すと自動的に拾われるアイテムです。現在のFusion BRでは、2種類のピックアップがあります。アイテムボックス内のピックアップと、プレイヤーがドロップするピックアップ(武器、グレネード)です。

pickup

武器ドロップ

Fusion BRでは、プレイヤーは自分の武器を地面に落とすことがあります。ドロップは、インタラクションキー(F)を押しながら、既にあるスロットと一致する武器を拾うか、プレイヤーが死亡すると、そのプレイヤーのすべての武器がドロップされます。

ドロップが開始されると、特別な DynamicPickup オブジェクトが生成されます。DynamicPickup はプレイヤーがドロップできるすべてのオブジェクトのラッパーとして動作します。このオブジェクトには、ドロップに必要なセットアップ(具体的には、NetworkRigidbody コンポーネント)が含まれています。Fusion BR の全ての武器は個別のネットワーク・オブジェクトなので、武器の GameObject 全体が DynamicPickup を親にして、ワールドに投げ出されます。これにより、他のプレイヤーがウェポンを拾ったときに、ビジュアルや弾薬など、ウェポンの状態など、前の所有者のプロパティを保持することができます。

weapon drop

武器は IDynamicPickupProvider インターフェースを通して DynamicPickup に重要な情報を提供します。例えば、インタラクションUIに使用される名前や説明、正しいリジッドボディの動作を保証するためにドロップの前に有効にする武器のコライダなどです。

C#

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コンポーネントによって処理され、完全に計算されます(tick accurate animationsアドオンでは、アニメーションイベントには対応していません)。足の変形位置の変化は、足が実際に地面に触れたかどうかを検出するために単純にチェックされます。タッチが検出されると、小さなレイキャストが発射され、サーフェスに関する情報が取得されます。サーフェスコライダーゲームオブジェクトに割り当てられたUnityタグは、異なるサーフェスタイプを区別するために使用されます。

C#

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;
    }
}

各エージェントには、各サーフェスで再生されるサウンドを指定する足音のセットアップを割り当てることができます。足音の設定には、歩いたり走ったりするときのバリエーションも含まれているので、移動速度に応じて異なる音や音量を実現できます。

Note: 現在生成されているレベルでは、デフォルトの地表音と水面音のみが使用されています。
Back to top