Unity基于NetWork的局域网对战游戏制作

现在的游戏大体分为2种,要么就是单机游戏,要么就是联网游戏。像现在比较火的游戏,比如手机游戏王者荣耀,比如端游LOL,这些都是联网游戏。再比如求生之路系列,鬼泣系列,生化危机系列这些都是单机游戏。但是我们会发现一个点,求生之路可以和朋友一起开黑。那这到底算单机还是联网游戏呢?还有,这个和朋友一起玩是怎么做到的?那么这就是我们今天讨论的话题了:基于NetWork的局域网对战游戏制作。先上效果图:

我也创了个交流群 点击下面链接即可加入点击链接加入群聊【cocos/unity交流群】

这个demo包含玩家的移动旋转和子弹发射。那么这个效果怎么做出来呢?

首先,我们需要了解unity里面的局域网组件(NetWork系列)这个是unity已经做好了的,所以我们只要会用它就可以了。官方也有英文教程。感兴趣的可以去看看,学习学习。

首先我们需要创建一个空节点,然后在它上面添加组件:NetWorkManage,看名字都知道,这就是管理类。它非常重要。

同时界面也要稍微弄下,不然不给提示,别人也不知道怎么用,不是吗?下面的HUD就是显示相关的,和上面的配套用。有了这两个,基本上就能组件局域网了。不信?那就保持这样,然后打包发表运行,同时运行unity。这样就有了两个客户端了,其中一个需要作为服务器,另一个就连接它,充当客户端。如图:

我这里只打开一个,另一个一模一样的。然后你选择谁为主机,点击就可以了,就能出现像最前面那张图一样的情况。那么说明你就弄好了一个简单的局域网了。然后我们开始做局域网对战游戏。创建一个人物预制体,然后控制预制体。这里给预制体挂上脚本,然后就可以控制了。这里我直接给代码了,注释都有:

然后光这样还不够,你会发现只有你的客户端有子弹生成,或者人物移动,其他客户端或者服务器没有同步到,这就很尴尬了。那么我们需要用到一个组件,来同步位置和旋转等:NetWorkTransform组件给玩家,然后再给玩家一个组件,这个组件就是表示它是一个网络物体,相当与一个标识:NetWorkIdentity。这样再重新打包,然后运行,你就可以发现两边同步了。这样我们的局域网对战游戏就差不多搞定了。

OK,那么整个的效果就搞定了。如果实在是不懂的,可以来找我拿源码demo哦。这个项目就到这里了。不喜勿喷哦!

推荐阅读更多精彩内容