This document is about: FUSION 1
SWITCH TO

Interactions

Level 4

概述

互動物件是玩家可以與之互動的場景物件。當玩家瞄準一個具有Interaction圖層的碰撞器及含有一個執行IInteraction介面的元件的物件時,將觸發互動流程。

注意事項:為了簡化性,在武器元件中直接處理互動。

物品盒

物品盒散落在地圖各處,以提供玩家武器、手榴彈、子彈、護盾包、健康包及噴射背包燃料。在盒子中的物品是在玩家打開盒子時繁衍的常規拾取物。基於物品盒預製件中指定的機率來隨機選擇物品。一段時間之後物品盒會自動關閉,並且無法再次打開,直到冷卻期間結束。

item box

拾取物

可以透過互動動作拾取或玩家按下拾取按鈕時自動拾取的物品。在Fusion BR的目前的版本,有兩種類型的拾取物。物品盒中的拾取物及玩家丟棄的拾取物(武器、手榴彈)。

pickup

武器丟棄

在Fusion BR中,玩家可以丟棄他們的武器到地上。可以按住互動鍵(F)來開始丟棄,或是拾取一個配對到一個已經佔用的槽的武器時開始丟棄,或是當玩家死亡時,玩家的所有武器都會被丟棄。

當開始丟棄時,將繁衍一個特殊的DynamicPickup物件。DynamicPickup作為一個針對任何玩家可以丟棄的物件的包裝函式。它含有針對丟棄的基本設定(具體是一個NetworkRigidbody元件)。因為在Fusion BR中的每個武器都是一個單獨的網路物件,整體的武器遊戲物件是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元件處理,並且被完全計算(在刷新準確動畫附加元件中,不支援動畫事件)。簡單地檢查腳部轉換位置的變化,以偵測腳部實際接觸地面的時間。當偵測到一個接觸,將發射一個小的射線以獲得關於表面的資訊。指派給表面碰撞器遊戲物件的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;
    }
}

每個代理可以有一個被指派的腳步設定,其指定針對各個表面而應該播放的聲音。腳步設定也含有變數來針對行走或奔跑,這樣可以基於移動速度來達到不同的聲音或不同的音量。

注意事項:在目前的已生成關卡中,只有使用預設表面及水面聲音。
Back to top