Interactions
概述
互動物件是玩家可以與之互動的場景物件。當玩家瞄準一個具有Interaction
圖層的碰撞器及含有一個執行IInteraction
介面的元件的物件時,將觸發互動流程。
物品盒
物品盒散落在地圖各處,以提供玩家武器、手榴彈、子彈、護盾包、健康包及噴射背包燃料。在盒子中的物品是在玩家打開盒子時繁衍的常規拾取物。基於物品盒預製件中指定的機率來隨機選擇物品。一段時間之後物品盒會自動關閉,並且無法再次打開,直到冷卻期間結束。
拾取物
可以透過互動動作拾取或玩家按下拾取按鈕時自動拾取的物品。在Fusion BR的目前的版本,有兩種類型的拾取物。物品盒中的拾取物及玩家丟棄的拾取物(武器、手榴彈)。
武器丟棄
在Fusion BR中,玩家可以丟棄他們的武器到地上。可以按住互動鍵(F)來開始丟棄,或是拾取一個配對到一個已經佔用的槽的武器時開始丟棄,或是當玩家死亡時,玩家的所有武器都會被丟棄。
當開始丟棄時,將繁衍一個特殊的DynamicPickup
物件。DynamicPickup
作為一個針對任何玩家可以丟棄的物件的包裝函式。它含有針對丟棄的基本設定(具體是一個NetworkRigidbody
元件)。因為在Fusion BR中的每個武器都是一個單獨的網路物件,整體的武器遊戲物件是DynamicPickup
的上層,並且被置放到世界中。這確保當另一名玩家拾取武器時,它保留來自其上一名擁有者的屬性,比如視覺效果、子彈,或任何其他武器狀態。
武器透過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標籤用於區分不同的表面類型。
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;
}
}
每個代理可以有一個被指派的腳步設定,其指定針對各個表面而應該播放的聲音。腳步設定也含有變數來針對行走或奔跑,這樣可以基於移動速度來達到不同的聲音或不同的音量。