生成和再生成

初始化生成點

現在玩家角色的生成點是從原點( Vector3.zero )開始。當有多個玩家連線,會重疊在出生點上,正常的情況是角色會在不同的地方生成。 不過連線系統提供了 NetworkStartPosition Component 來處理產生位置。

  1. 首先產生空遊戲物件,命名為 Spawn Position 1
  2. 掛載 NetworkStartPosition Component。
  3. 設定位置。
  4. 複製 Spawn Position 1 物件,改名為 Spawn Position 2
  5. 改變 Spawn Position 2 的位置。
  6. Network Manager ,設定 Player Spawn Round Robin
    1. Network Manager 會自動場景上掛有 NetworkStartPosition 的物件,並取用其位置產生玩家。
    2. Player Spawn 有兩種方法:Random 和 Round Robin 。
      1. Random 作用為會在可用 NetworkStartPosition 的物件隨機挑一個出來使用。
      2. Round Robin 作用為優先使用沒用過的 NetworkStartPosition 的物件,直到全部都輪流到了,才會開始再使用。

設定生成點

在此教學最後一步,利用 NetworkStartPosition component 的陣列來製作一個簡單的玩家隨機生成系統。雖然跟網路連線比較無關,但會讓此範例更完整。

  1. 開啟 Health 腳本,新增放置出生點的陣列。
    private NetworkStartPosition[] spawnPoints;
    
  2. 新增 Start 方法。

    void Start ()
    {
    
    }
    
  3. 判斷此物件是不是本地玩家

    if (isLocalPlayer)
    {
    
    }
    
  4. 找出所有掛載 NetworkStatrtPosition 的物件並加到陣列內
    spawnPoints = FindObjectsOfType<NetworkStartPosition>();
    
  5. 在RpcRespawn 方法內移除此述句
    // Set the player’s position to origin
    transform.position = Vector3.zero;
    
  6. 替換為

     // 宣告並設定區域變數為原點
     Vector3 spawnPoint = Vector3.zero;
    
     // 假如陣列有東西,就隨便拿一個出來用
     if (spawnPoints != null && spawnPoints.Length > 0)
     {
         spawnPoint = spawnPoints[Random.Range(0, spawnPoints.Length)].transform.position;
     }
    
     // 把取出來的出生點位置指定給角色物件
     transform.position = spawnPoint;
    

    7.儲存並測試,現在遊戲一連線上,角色會在隨機的位置上生成。

results matching ""

    No results matching ""