MMorpg角色进入主城之角色控制

首先,我们考虑一下,角色控制有哪几种类型

1.当前用户的游戏角色
2.非本用户游戏角色,但是与当前用户角色在同一张地图上的其他角色

那么针对这样两种控制,我想到了使用不同的控制器,第一种:playerInputController、第二种EntituController,
playerInputController 这个控制器用来控制当前用户的角色,他是通过用户输入的键位来实现移动
EntityController 是用来控制场景中其他用户角色的移动,
至此,第一个问题告一段落,来看下一个问题

playerInputController 这个控制器很好实现,EntityController要如何实现,当前用户怎样才能知道其他玩家的移动状态,或者更简单的说,其他玩家在地图中的位置

1.我们先来解决最简单的问题,当前用户如何才能知道其他玩家在地图中的位置
解决方法:每隔一段时间,其他玩家所在的客户端,主动向服务器提交它在地图中的位置,服务器收到以后,向当前玩家发送其他玩家在地图中的位置即可,
2.在来看一下移动状态的问题,其实上一个问题解决之后,这个问题也是很好解决的,只要其他玩家在发送自己的位置的时候,把自己的移动状态也发送到服务器不就可以了?
至此,这个问题解决

新的问题来了,现在当前的玩家已经知道了其他玩家在当前地图中的位置,那么怎样才能将他映射成真正的移动状态呢?

1.首先解决最简单的问题,我并不映射为真正的移动状态,我仅仅是把角色移动到它在地图中真正的位置
解决方法:每一个当前角色每隔一帧都向服务器报告自己的位置信息,每当服务器接收到这样的信息之后,立刻将这个角色的位置信息,广播给其他与这个角色在同一张地图的所有玩家(当然,这里可以设置一些参数,比如,只广播给与这个玩家相距多少范围内的玩家)
2.简单的问题解决了,下面来解决映射移动状态的问题,其实与上一个问题一样,只需要在报告位置的同时附加上当前的移动状态即可,当其他角色收到这样的数据,就可以通过EntityController来控制其他玩家的移动

至此问题全部解决,这里只是提供了我在做的时候的一些思路,肯定还有性能更好,效率更快的方法!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值