坦克大战(二)"/>
基于ComblockEngine+Unity的联机版坦克大战(二)
文章目录
- 阶段目标
- 效果演示
- 单机版的结构
- 联机版的结构
- 战场的跳转
- 移动同步
- 存在的问题
- 后续内容
- 源码地址
阶段目标
- 从大厅进入战场
- 客户端修改为双人版本
- 战场内移动同步的实现
效果演示
单机版的结构
GameManager作为一个全局的游戏管理器存在,每个具体的坦克是由TankManager类来进行管理,其中,坦克具体的移动和射击逻辑是分别交由TankMovment和TankShooting去完成。
联机版的结构
联机版和单机版在类的设计实现上是一样的,主要区别也就下面几点:
- TankManager交由PlayerAvatar来持有,因为联机时,我们每个角色的数据创建时由server来驱动的,与server对应的玩家实体是PlayerAvatar,这个PlayerAvatar相当于是一个真实的服务器一致的逻辑数据实体。
- 区分出主玩家控制的坦克角色和其他非主玩家坦克
战场的跳转
这类开房间式的游戏,都会涉及到一个从大厅跳转战场的流程。坦克大战也是一样,我们的战场和大厅在这个版本里面都是SpaceRoom这一个类来完成,只是战场和大厅的uType值不同。
class SpaceType(object):SPACE_TYPE_NONE = 0SPACE_TYPE_HALL = 1SPACE_TYPE_BATTLE = 2
在完成匹配后,我们会申请创建一个战场space,并且在space创建完毕后,让base上的playAvatar一个个enter进space,在enter到space上时,会先离开大厅这个space,然后调用playAvatar在cell部分的onTeleportSpaceCB方法,该方法主要做一件事情,就是让玩家teleport到战场所在的space。
跳转战场的时序图如下:
更多推荐
基于ComblockEngine+Unity的联机版坦克大战(二)
发布评论