首页 > Photon > 基础系列 > PhotonServer(六)Unity客户端玩家的位移同步
2017
11-16

PhotonServer(六)Unity客户端玩家的位移同步

上一篇文章我们实现了角色创建同步,下面继续来实现玩家的位移同步

在实现之前,我们先整理下位移同步的思路

一、客户端每隔指定时间向服务器端发送位置信息

二、服务器接收并记录该客户端的位置信息

三、服务器每隔指定时间广播给所有在线客户端发送所有客户端的位置信息

四、客户端接收服务器发送的所有客户端位置信息,并修改他们位置

思路很简答,那下面我们就从客户端先着手

客户端位移同步

一、在客户端添加SyncTransformRequest脚本,用于客户端给服务器发送位置信息

二、在客户端添加SyncTransformEvent脚本,用于监听服务器发送的所有客户端位置信息

三、在GameScene场景的Handler物体上挂载SyncTransformEvent

四、在Player脚本添加位置发送消息

五、在Player脚本添加其它玩家位置同步方法

PhotonServer(六)Unity客户端玩家的位移同步 - 第1张  | u3d8技术分享

SyncTransformRequest

SyncTransformEvent

Player

服务器端位移同步

一、添加SyncTransformHandler脚本,用于接收客户端发来的位置信息

二、在ClientPeer脚本添加username、x\y\z,用于记录每个客户端的用户名,坐标

三、在LoginHandler脚本的OnLoginReceived方法给username赋值

四、在SyncTransformHandler给x\y\z赋值

五、添加SyncPositionTread脚本,用于每隔指定时间向所有在线客户端发送所有客户端的位置信息

六、在MyGameServer脚本添加开启SyncPositionTread线程

PhotonServer(六)Unity客户端玩家的位移同步 - 第2张  | u3d8技术分享

SyncTransformHandler

ClientPeer

LoginHandler

SyncPositionTread

MyGameServer

以上内容完成,服务器端重新生成,就可以在Unity上测试位移同步的效果啦

PhotonServer(六)Unity客户端玩家的位移同步 - 第3张  | u3d8技术分享

项目使用版本:Unity5.3.4 GitHub下载地址:

https://github.com/654306663/PhotonServer

最后编辑:
作者:网虫虫
网虫虫
分享是一种快乐; 分享是一种美德; 分享是一种幸福!

0 0 votes
Article Rating
Subscribe
提醒
guest
2 评论
Inline Feedbacks
View all comments
Unity技术分享网友
Unity技术分享网友
3 年 之前

你好,启动不了线程怎么办。刚调用Run()启动然后就会报错,“正在终止线程”

匿名
匿名
3 年 之前

第几个步骤出现的问题?是不是配置错了?