This document is about: FUSION 2
SWITCH TO

インタラクション

概要

インタラクションオブジェクトとは、プレイヤーが触ったり使ったりできるシーンオブジェクトのことです。インタラクションプロセスが起動するのは、プレイヤーがInteractionレイヤーのあるコライダーを持ち、Interactionインターフェイスコンポーネントを含むオブジェクトに注目した時です。全てのプレイヤーインタラクションはInteractionsコンポーネントが処理します。

アイテムボックス

アイテムボックスはマップ上に点在しており、プレイヤーに武器、グレネード、弾薬、シールドパック、回復パック、ジェットパック用燃料などを提供します。ボックス内のアイテムは通常のピックアップアイテムであり、プレイヤーがボックスを開けたときに出現します。アイテムは、アイテムボックスのプレハブに指定された確率に基づいてランダムに選ばれます。ボックスは一定時間後に自動で閉じられ、クールダウンが終了するまで再び開けることはできません。

Item Box

ピックアップ

インタラクト操作で取得するか、プレイヤーがピックアップボタンを押したときに自動的に取得されるアイテムです。ピックアップには2種類あります。

  • アイテムボックスからのピックアップ
  • プレイヤーが落としたアイテムのピックアップ(武器やグレネードなど)
Pickup

ウェポンドロップ

BR200では、プレイヤーが地面に武器をドロップすることができます。インタラクションキー(F)を押すか、すでに武器スロットに入っている武器と同じ種類の武器をピックアップした時、またはプレイヤーが死んだとき(そのプレイヤーのすべての武器がドロップします)にドロップ処理が始まります。

ドロップ処理が始まると、特別なDynamicPickupオブジェクトがスポーンされます。DynamicPickupは、プレイヤーがドロップできるすべてのオブジェクトのラッパーとして動作します。ここには、ドロップに不可欠なセットアップ(特にNetworkRigidbody3Dコンポーネント)が含まれています。BR200で出てくる武器は全て、個別のネットワークオブジェクトであるため、武器のGameObject全体がDynamicPickupに親付けされワールドに公開されます。こうすることで、ほかのプレイヤーが武器をピックアップした時、前の持ち主のプロパティ(ビジュアル、弾薬などその他のウェポンステート)ga
保持されます。

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

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

各エージェントには、接地する面ごとに再生される足音を指定する「足音設定(footstep setup)」を割り当てることができます。足音設定には、歩行時と走行時のバリエーションも含まれており、移動速度に応じて異なる音や音量を再生することが可能です。

備考: 現在生成されているレベルでは、デフォルトの地面と水面のサウンドのみが使用されています。
Back to top