怎么修改服务器王者,王者荣耀实时对战服务器Photon之PUN修改网络角色预制

本文主要是介绍怎么修改服务器王者,王者荣耀实时对战服务器Photon之PUN修改网络角色预制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Animator Synchronization

PhotonAnimatorView组件使网络设置变得轻而易举,节省了大量的时间和麻烦。它允许您定义要同步的层次权重和哪些参数。层次权重只有在游戏中改变时才需要进行同步,并且根本不需要同步它们就可以避免。参数也是如此。有时可以从其他因素导出动画的价值观。需要同步的参数尽可能的少。

1.将PhotonAnimatorView添加到机器人Kyle Prefab

2.将PhotonAnimatorView从其标题拖到PhotonView组件的新的Observable组件条目中

3.现在,在“同步参数”中,将“速度”设置为“离散”

4.将方向设置为离散

5.设置跳转到离散

6.将您设为禁用

7e2ade621e088578f8baa38316e32c3f.gif

每个值可以被禁用,或者是离散地或连续地同步。 在我们的例子中,由于我们没有使用Hi参数,所以我们将禁用它并从带宽中保存。

离散同步意味着值每秒发送10次(在OnPhotonSerializeView中)。 接收客户端将值传递给其本地的Animator。

连续同步意味着PhotonAnimatorView运行每一帧都进行计算进行同步。 当OnPhotonSerializeView被调用(每秒10次)时,自上一次调用以来记录的值一起发送。 接收客户端然后按顺序应用值以保持平滑过渡。 当这种模式更平滑时,它也会发送更多的数据来达到这个效果。

User Input Management

网络用户控制的一个重要方面是,所有角色都将实例化相同的预制,但只有一个表示用户实际在电脑前播放,所有其他实例表示其他用户在其他计算机上播放。 所以这个想法的第一个障碍就是“输入管理”。 我们如何在一个实例而不是其他实例上启用输入,以及如何知道哪一个是正确的? 输入isMine概念。

1.我们来编辑我们之前创建的PlayerAnimatorManager脚本。

2.打开脚本PlayerAnimatorManager

3.将PlayerAnimatorManager类从MonoBehaviour转换为Photon.MonoBehaviour,它方便地显示了photonView组件。

4.在Update()调用中,插入一开始

if (photonView.isMine == false && PhotonNetwork.connected == true)

return;

5.保存脚本PlayerAnimatorManager

好的,如果实例由'client'应用程序控制,PhotonView.isMine将是真的,这意味着这个实例代表在这个应用程序中在这台计算机上的物理人物。 所以如果它是假的,我们不想做任何事情,完全依靠PhotonView组件来同步我们之前设置的变换和动画组件。

为什么要在我们的if语句中强制PhotonNetwork.connected == true?因为在开发过程中,我们可能想要测试这个预制而不连接。 例如,在虚拟场景中,只需创建和验证与网络功能无关的代码。 所以使用这个附加表达式,如果我们没有连接,我们将允许使用输入。 这是一个非常简单的方法,将在开发过程中大大提高您的工作效率。

Camera Control

与输入一样,角色只有一个游戏的视图,所以我们需要CameraWork脚本只跟随本地控制的角色,而不是其他角色。 这就是为什么CameraWork脚本需要这样的能力来定义何时跟随。

1.我们来修改PlayerManager脚本来控制CameraWork组件。

2.打开PlayerManager脚本。

3.在Awake()和Update()方法之间插入下面的代码

///

/// MonoBehaviour method called on GameObject by Unity during initialization phase.

///

void Start()

CameraWork _cameraWork = this.gameObject.GetComponent();

if (_cameraWork != null)

if (photonView.isMine)

_cameraWork.OnStartFollowing();

else

Debug.LogError("Missing CameraWork Component on playerPrefab.",this);

4.保存脚本PlayerManager

首先,它获取CameraWork组件,我们希望这样,所以如果我们没有找到它,我们输出一个错误。 那么,如果photonView.isMine是真的,这意味着我们需要初始化这个实例,所以我们调用_cameraWork.OnStartFollowing(),这有效地使相机跟随场景中的实例。所有其他角色实例将其photonView.isMine设置为false,因此它们各自的_cameraWork将不会执行任何操作。

最后一个改变,使这项工作:

在角色预制上,关闭CameraWork组件上的启动

489a4ecc4e1361dafea75ad35dbf66f5.png

它现在有效地将逻辑追随到玩家脚本PlayerManager中,该脚本将如上所述调用_cameraWork.OnStartFollowing()。

Beams Fire Control

射击也遵循上面的输入控制原理.

打开脚本PlayerManager

用if语句判断输入处理调用。

if (photonView.isMine)

ProcessInputs ();

但是,当测试这个,我们只看到本地玩家的射击。 我们需要看看其他实例是否触发! 我们需要一种在网络上同步启动的机制。 为了做到这一点,我们将手动同步IsFiring布尔值,到目前为止,我们已经离开了PhotonTransformView和PhotonAnimatorView来为我们做所有的变量内部同步。

打开脚本PlayerManager

实现IPunObservable

fe83c191726b4e0eb5e4cfbb2abba100.gif

在IPunObservable.OnPhotonSerializeView中添加以下代码

if (stream.isWriting)

// We own this player: send the others our data

stream.SendNext(IsFiring);

else

// Network player, receive data

this.IsFiring = (bool)stream.ReceiveNext();

保存脚本PlayerManager

返回Unity编辑器,在您的资产中选择我的机器人预制,并在PhotonView组件中添加一个观察条目,并将PlayerManager组件拖动到它

bfafa784117a54bc7e0ec3a05244164d.png

没有最后一步,IPunObservable.OnPhotonSerializeView从来没有被调用,因为它没有被PhotonView观察到。

在这个IPunObservable.OnPhotonSerializeView方法中,我们传递一个变量流,这是通过网络发送的,如果我们有机会读取和写入数据,这个调用。 当我们是localPlayer(PhotonView.isMine == true)时,我们只能写,否则我们读。

由于流类有帮助我们告诉该怎么做,我们只需依靠stream.isWriting知道当前实例中的预期内容。

如果我们预期写数据,我们将使用Stream.SendNext()附加到数据流的IsFiring值,这是一种非常方便的方法,它将所有的数据序列化工作全部放弃。 如果我们预期读取,我们使用stream.ReceiveNext()。

Health Synchronization

好的,要完成更新网络的角色功能,我们将同步健康值,以便角色的每个实例具有正确的健康值。 这与上面我们刚才介绍的IsFiring值完全一样。

打开脚本PlayerManager

在SendNext和ReceiveNext的IsFiring变量之后,在IPunObservable.OnPhotonSerializeView中,对于Health。

if (stream.isWriting)

// We own this player: send the others our data

stream.SendNext(IsFiring);

stream.SendNext(Health);

else

// Network player, receive data

this.IsFiring = (bool)stream.ReceiveNext();

this.Health = (float)stream.ReceiveNext();

保存脚本PlayerManager

在这种情况下,需要同步Health变量。

不管你有关于Photon产品的问题或者是Photon价格问题或者Photon教程方面的问题或者其他问题都可以联系我们给我我们留言,我们真诚的为您服务。

关注我们公众号PhotonServer 获取最新教程资源。

王者荣耀实时对战服务器Photon之Pun应用系列文章如果你喜欢请关注我公众号,并推荐给你你的小伙伴,谢谢。

这篇关于怎么修改服务器王者,王者荣耀实时对战服务器Photon之PUN修改网络角色预制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/373919

相关文章

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

webm怎么转换成mp4?这几种方法超多人在用!

webm怎么转换成mp4?WebM作为一种新兴的视频编码格式,近年来逐渐进入大众视野,其背后承载着诸多优势,但同时也伴随着不容忽视的局限性,首要挑战在于其兼容性边界,尽管WebM已广泛适应于众多网站与软件平台,但在特定应用环境或老旧设备上,其兼容难题依旧凸显,为用户体验带来不便,再者,WebM格式的非普适性也体现在编辑流程上,由于它并非行业内的通用标准,编辑过程中可能会遭遇格式不兼容的障碍,导致操

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~