? 久久国产激情对白,日韩毛片大全免费高清
聯(lián)系我們

給我們留言

聯(lián)系我們

地址:福建省晉江市青陽(yáng)街道洪山路國(guó)際工業(yè)設(shè)計(jì)園納金網(wǎng)

郵箱:info@narkii.com

電話(huà):0595-82682267

(周一到周五, 周六周日休息)

當(dāng)前位置:主頁(yè) > 3D教程 > 圖文教程

Photon與Unity核心技術(shù)之角色動(dòng)作同步

來(lái)源: 納金網(wǎng) | 責(zé)任編輯:傳說(shuō)的落葉 | 發(fā)布時(shí)間: 2018-03-16 11:06 | 瀏覽量:
文章標(biāo)題:Photon與Unity核心技術(shù)之角色動(dòng)作同步
文章作者:海洋_(CSDN )


本篇介紹關(guān)于使用Photon實(shí)現(xiàn)角色同步,客戶(hù)端還是選擇Unity開(kāi)發(fā),在實(shí)現(xiàn)動(dòng)作之前,Unity為我們提供了我們俗稱(chēng)為老動(dòng)畫(huà)和新動(dòng)畫(huà)狀態(tài)機(jī),我們提供了我們俗稱(chēng)為老動(dòng)畫(huà)和新動(dòng)畫(huà)狀態(tài)機(jī),我們先介紹老動(dòng)畫(huà)的實(shí)現(xiàn)方式,它是通過(guò)Animation組件把角色的動(dòng)作拖進(jìn)去的。


  • 老動(dòng)畫(huà)網(wǎng)絡(luò)同步處理

老動(dòng)畫(huà)使用在Unity以前的版本中常用,效果如下所示:

Photon與Unity核心技術(shù)之角色動(dòng)作同步9

 

在Photon中也有關(guān)于老動(dòng)畫(huà)同步的組件,如下圖所示:

Photon與Unity核心技術(shù)之角色動(dòng)作同步8

 

也需要將Third Person Network組件拖到Observed Components組件上,這樣就完成了同步設(shè)置,Photon使用的同步方式是狀態(tài)同步,它同步包括:狀態(tài),位置,方向。我們看一下負(fù)責(zé)發(fā)送和接收消息的Third Person Network腳本代碼,如下所示:

  • void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)  
  •    {  
  •        if (stream.isWriting)  
  •        {  
  •            //We own this player: send the others our data  
  •            stream.SendNext((int)controllerScript._characterState);  
  •            stream.SendNext(transform.position);  
  •            stream.SendNext(transform.rotation);   
  •        }  
  •        else  
  •        {  
  •            //Network player, receive data  
  •            controllerScript._characterState = (CharacterState)(int)stream.ReceiveNext();  
  •            correctPlayerPos = (Vector3)stream.ReceiveNext();  
  •            correctPlayerRot = (Quaternion)stream.ReceiveNext();  
  •   
  • nbsp;        // avoids lerping the character from "center" to the "current" position when this client joins  
  •     if (firstTake)  
  •     {  
  •         firstTake = false;  
  •         this.transform.position = correctPlayerPos;  
  •         transform.rotation = correctPlayerRot;  
  •     }  
  •   
  •        }  
  •    }  

上述函數(shù)負(fù)責(zé)接收和發(fā)送消息,它使用的是Photon自帶的回調(diào)函數(shù)


  • OnPhotonSerializeView  

游戲中其他玩家是通過(guò)插值的方式處理的,插值函數(shù)如下所示:


  • if (!photonView.isMine)  
  • {  
  •     //Update remote player (smooth this, this looks good, at the cost of some accuracy)  
  •     transform.position = Vector3.Lerp(transform.position, correctPlayerPos, Time.deltaTime * 10);  
  •     transform.rotation = Quaternion.Lerp(transform.rotation, correctPlayerRot, Time.deltaTime * 10);  
  • }  

以為我們的插值是對(duì)于其他玩家使用的,所以做了一個(gè)if語(yǔ)句判斷,這樣就完成了同步處理,下面重點(diǎn)介紹新動(dòng)畫(huà)狀態(tài)機(jī)的處理方式。


  • 新動(dòng)畫(huà)狀態(tài)機(jī)同步

新動(dòng)畫(huà)狀態(tài)機(jī)實(shí)現(xiàn)如下所示:

Photon與Unity核心技術(shù)之角色動(dòng)作同步7

 

使用的是Animator組件,這些都是最基本的常識(shí),如果讀者有不清楚的地方可以自己看一下Unity官方文檔或者在網(wǎng)上搜一下,相關(guān)資料很多的。基本的組件已經(jīng)完成,接下來(lái)看一下如何使用同步組件?先看下圖所示的效果圖:

Photon與Unity核心技術(shù)之角色動(dòng)作同步6

 

相比老動(dòng)畫(huà)狀態(tài)機(jī),組件明顯不一樣,新增加了兩個(gè)組件,一個(gè)是Photon Animator View,該組件主要是針對(duì)新動(dòng)畫(huà)狀態(tài)機(jī)的層設(shè)置,比如下圖所示:

Photon與Unity核心技術(shù)之角色動(dòng)作同步5

 

上圖是我們?cè)O(shè)置的角色新動(dòng)畫(huà)狀態(tài)機(jī)的Layer,另外我們還有一些Parameters參數(shù)設(shè)置,如下圖所示:

Photon與Unity核心技術(shù)之角色動(dòng)作同步4

 

對(duì)應(yīng)的角色組件Photon Aniamtor View如下所示:

Photon與Unity核心技術(shù)之角色動(dòng)作同步3

 

該組件在Photon NetWork都有,讀者可以自行查看,這里只是告訴讀者如何使用。

接下來(lái)再看同步的組件 Photon Transform View組件,它里面包括 同步位置,方向,縮放,這個(gè)與老動(dòng)畫(huà)狀態(tài)機(jī)不同,效果如下所示:

Photon與Unity核心技術(shù)之角色動(dòng)作同步2

 

在Synchronize Position中還有兩個(gè)選項(xiàng)要注意,一個(gè)是Interpolate Option,這個(gè)表示的是同步NPC的插值方式,一般采用的就是Lerp線(xiàn)性插值,插值速度默認(rèn)是1,這個(gè)可以根據(jù)自身情況調(diào)整數(shù)值。這樣我們就完成了角色同步,然手使用接口:


  • PhotonNetwork.Instantiate  

實(shí)例化角色,可以看到同步的情況了,效果如下所示:

Photon與Unity核心技術(shù)之角色動(dòng)作同步1

 

因?yàn)槭褂玫氖悄J(rèn)的Photon國(guó)外服務(wù)器,有點(diǎn)延遲,如果服務(wù)器在國(guó)內(nèi)或者自己搭建一個(gè)沒(méi)有任何問(wèn)題。
unity資源下載:http://www.594ljc.cn/club/forum-51-1.html


相關(guān)文章
網(wǎng)友評(píng)論

您需要登錄后才可以發(fā)帖 登錄 | 立即注冊(cè)

關(guān)閉

全部評(píng)論:0條

推薦
熱門(mén)