close

 

Unity C# 網路角色移動同步(新版)

 

  • 此篇重點 * * * * *

→ 利用 " NetworkIndentity " 元件讓玩家角色在網路上可以被辨識

  • Server Only →只有Server端(Host)可以對物件進行控制
  • Local Player Authority →本地端玩家皆可以對此物件進行控制

→ 利用 " NetworkTransform " 元件讓玩家角色在網路上進行Location與Position的同步

  • Network Send Rate →網路同步速率,數值愈高同步頻率愈高網速的要求也是
  • Transform SyncMode →選擇要同步的項目
  • Movement →同步Postion的調整參數
  • Rotation →同步Rotation的調整參數

 

 

  • 此篇效果-效果名稱 * * * * 

 

 

 

-  大概了解重點後,接下來進入完整教學   -

 

一、延續上一篇的專案,我們在場景中新增一個角色模組,並將其座標設定為(X  = 0,  = 0, Z = 0),模型隨自己喜好挑選就好。

 

 

二、接下來在剛剛的模組上新增一個"NetworkIndentity"元件,並且請勾選Local Player Authority

 

 

三、接下來在新增的模組上新增一個"NetworkTransform"元件,物件在Inspector中看起來就會像是下圖所示

 

四、接下來我們在角色物件上新增一個叫做"Move"的程式碼,並且複製下面的程式碼並取代到Move

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

//使用UnityEngine.NetworkingAPI

using UnityEngine.Networking;

 

//把這個類別改成網路行為才可以使用UnityEngine.NetworkingAPI

public class Move : NetworkBehaviour

{

    // 利用WSAD進行角色移動控制

    void Update()

    {

        //判斷這個角色是不是玩家自己的角色,如果是才可以進行控制

        if (isLocalPlayer)

        {

            if (Input.GetKey(KeyCode.W))

                this.transform.position += new Vector3(0, 0, 1 * Time.deltaTime);

 

            if (Input.GetKey(KeyCode.S))

                this.transform.position += new Vector3(0, 0, -1 * Time.deltaTime);

 

            if (Input.GetKey(KeyCode.A))

                this.transform.position += new Vector3(-1 * Time.deltaTime, 0, 0);

 

            if (Input.GetKey(KeyCode.D))

                this.transform.position += new Vector3(1 * Time.deltaTime, 0, 0);

        }

        //如果不是玩家自己的角色(其他玩家)不做任何反應

        else

            return;

    }

}

五、編輯完成後我們把我們場景中的物件拖曳至 Assets 資料夾中讓它形成一個Prefab,並且刪除場景中的角色物件(注意!!!要先形成Prefab才可以刪掉喔!)

 

 

 

六、建立好prefab之後我們點擊在上一次教學中建立好的connect物件,找到它的NetworkManager元件並點開裡面的Spawn Info屬性

  1. 點開SpawnInfo屬性之後我們將剛剛做好的Prefab物件拖曳進Player  Prefab欄位中

 

七、再來我們按下Play按鈕,並按下H鍵建立  Host端這時我們可以看到畫面中新生成了一個角色!並且我們可以使用WSAD按鍵進行移動控制

 

 

七、為了測試連線效果(我們也要可以看到其他玩家的狀態)我們將專案匯出,並且執行,另外我們也在Unity上執行遊戲並且進行連線,並且觀察兩邊的移動是否有進行同步!這裡我們使用影片來進行呈現!大功告成~

 

 

 

  • 此篇重點 * * * * *

 

→ 利用 " NetworkTransform " 元件讓玩家角色在網路上進行Location與Position的同步

 

  • Network Send Rate →網路同步速率,數值愈高同步頻率愈高網速的要求也是
  • Transform SyncMode →選擇要同步的項目
  • Movement →同步Postion的調整參數
  • Rotation →同步Rotation的調整參數

 

→ 利用 " NetworkIndentity " 元件讓玩家角色在網路上可以被辨識

 

  • Server Only →只有Server端(Host)可以對物件進行控制
  • Local Player Authority →本地端玩家皆可以對此物件進行控制

 

 

上一篇《Unity網路連線建立(新版)》http://cindyalex.pixnet.net/blog/post/229962062

下一篇《Unity網路角色動畫同步(新版)》https://goo.gl/N3mEV4

 

 

 

-------------------------------------------------------------------------------------------------------------------------------------

 

我們有粉絲專頁囉!!!       

如果怕有問題連絡不到我們,歡迎隨時私訊FB粉專哦!!!

https://www.facebook.com/Straying2018/

 

●     如果這篇文章有幫助到您,希望您能留言給予我們鼓勵 !  

●     對於文章有任何的建議,非常歡迎留言告訴我們哦 !!!  

●     有任何想知道的功能也歡迎告訴我們,我們會盡快寫成部落格分享給大家!

 

- By Alex-      

 

arrow
arrow

    『迷途』 發表在 痞客邦 留言(1) 人氣()