国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

6.Unity-Mirror幀同步攻擊思路

2022-09-03 08:54 作者:機(jī)智的小草yns  | 我要投稿

最近用mirror寫了聯(lián)網(wǎng)demo,分享下個人的做法思路

不知道什么是Mirror的,見前期介紹


一次攻擊事件的流程:

  1. 當(dāng)本地玩家A攻擊玩家B。本地玩家A先向服務(wù)器發(fā)送攻擊事件(A,B)

  2. 服務(wù)器接收后,計(jì)算數(shù)值最終傷害結(jié)果,扣除玩家B的體力,并轉(zhuǎn)發(fā)給所有客戶端。

  3. 服務(wù)器向所有的玩家A轉(zhuǎn)發(fā)本地攻擊事件(A,B)

  4. 所有的玩家A通知所有玩家B受到攻擊,玩家B播放受擊動畫。


攻擊事件流程


在A玩家的攻擊中,只有本地玩家A才有發(fā)出攻擊的權(quán)限。

而遠(yuǎn)端玩家A只是接收服務(wù)器命令播放動畫而已,遠(yuǎn)端玩家在世界中發(fā)出是技能都不會觸發(fā)任何事件。


攻擊事件示例代碼:(部分參數(shù)省略)

//傷害觸發(fā)
public override void OnAckTrigger(Collider other, AckInfoObject triggerInfo)
{
 ?//受擊對象
 ?var damager = other.GetComponent<MonoAttacker>();
 ?if (damager != null)
 ?{
 ? ?//利用 本地玩家轉(zhuǎn)發(fā)信息
 ? ?PlayerManager.Instance.LocalPlayer.CmdOnDam(damager.netId, triggerInfo.ackInfo);
 ?}
}

[Command]
public void CmdOnDam(uint DamagerNetId, AckInfo ackInfo)
{
 ?//數(shù)據(jù)層在服務(wù)器中執(zhí)行
 ?//獲取受擊者
 ?var OnDamager = PlayerManager.Instance.GetPlayer(DamagerNetId);

 ?//隨機(jī)波動
 ?RandomAck = Random.Range(0.95f, 1.05f);
 ?//傷害數(shù)值
 ?float DamageValue = OnDamager.Ack * setting.AckRate * RandomAck; 
 ?//結(jié)算最終血量
 ?int targetHp = Math.Max(Mathf.RoundToInt(OnDamager.playerData.hp - DamageValue), 0);
 ?//用于傷害數(shù)字顯示
 ?ackInfo.ackValue = DamageValue;

 ?//修改playerData
 ?var newData = OnDamager.playerData;
 ?newData.hp = targetHp;
 ?OnDamager.playerData = newData;

 ?//執(zhí)行表現(xiàn)層
 ?RcpOnDam(DamagerNetId, ackInfo);
}


[ClientRpc]
public void RcpOnDam(uint DamagerNetId, AckInfo ackInfo)
{
 ?//通過netId獲取受擊方 執(zhí)行受擊表現(xiàn)
 ?IAttacker onDamgerer = PlayerManager.Instance.GetPlayer(DamagerNetId);
 ?onDamgerer.OnDam(ackInfo);
}


public override void OnDam(AckInfo ackInfo)
{
 ?//受擊中動畫
 ?playerMover.PlayAnim(AnimHash.damageAnim01);

 ?//擊飛敵人...

 ?//擊中特效...
	
 ?//傷害數(shù)字...
}


6.Unity-Mirror幀同步攻擊思路的評論 (共 條)

分享到微博請遵守國家法律
乳山市| 芜湖市| 沅陵县| 丹棱县| 介休市| 祁东县| 永登县| 揭东县| 广南县| 婺源县| 东明县| 成都市| 海林市| 五莲县| 县级市| 岳池县| 乌拉特前旗| 陇川县| 拜城县| 玛纳斯县| 宜川县| 松潘县| 安多县| 金沙县| 得荣县| 望城县| 张掖市| 墨竹工卡县| 东方市| 屏南县| 乌兰察布市| 鄂托克旗| 长治市| 隆德县| 通江县| 桂阳县| 龙南县| 玉环县| 武威市| 宁乡县| 江源县|