インタラクション
概要
インタラクションオブジェクトとは、プレイヤーが触ったり使ったりできるシーンオブジェクトのことです。インタラクションプロセスが起動するのは、プレイヤーがInteraction
レイヤーのあるコライダーを持ち、Interaction
インターフェイスコンポーネントを含むオブジェクトに注目した時です。全てのプレイヤーインタラクションはInteractions
コンポーネントが処理します。
アイテムボックス
アイテムボックスはマップ上に点在しており、プレイヤーに武器、グレネード、弾薬、シールドパック、回復パック、ジェットパック用燃料などを提供します。ボックス内のアイテムは通常のピックアップアイテムであり、プレイヤーがボックスを開けたときに出現します。アイテムは、アイテムボックスのプレハブに指定された確率に基づいてランダムに選ばれます。ボックスは一定時間後に自動で閉じられ、クールダウンが終了するまで再び開けることはできません。

ピックアップ
インタラクト操作で取得するか、プレイヤーがピックアップボタンを押したときに自動的に取得されるアイテムです。ピックアップには2種類あります。
- アイテムボックスからのピックアップ
- プレイヤーが落としたアイテムのピックアップ(武器やグレネードなど)

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

武器は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)」を割り当てることができます。足音設定には、歩行時と走行時のバリエーションも含まれており、移動速度に応じて異なる音や音量を再生することが可能です。