unity官方内置网络unet的实例教程(五)

本教程继续讲解Unity内置网络库Unet如何实现角色射击行为的网络同步。主要内容包括:为子弹预制体添加NetworkIdentity和NetworkTransform组件,注册子弹预制体到NetworkManager,更新PlayerController脚本,实现子弹碰撞消失的网络同步。同时,介绍了添加玩家生命值、血条显示及血条随角色生命值变化的实现方法,以及使用Billboard脚本来保持血条始终面向玩家。
摘要由CSDN通过智能技术生成

我们接着上一章,继续将角色的射击行为进行网络化,为了使射击网络化我们得更新 Bullet子弹预制体和脚本。

首先,打开Unity编辑器,找到Bullet子弹预制体,添加 NetworkIdentity 组件 和 NetworkTransform这样使子弹预制具有ID识别和变换信息的传输。见下图



添加组件并设置值为0

接着,选中Hierarchy窗口中的 NetworkManager ,打开右侧属性面板的 Spawn Info,在 Registered Spawnable Prefabs的下面点击加号,然后将子弹预制体拖进去。见下图蓝色位置。



添加子弹预制

接下来,更新 PlayerController 脚本的代码,打开它进行编辑,最终的代码如下(动手实践是最好的学习方法,我把代码做成难以复制,仔细看的模式,不知是否可取):



代码

好了,保存脚本,回到Unity保存,重新再生成游戏,进行测试,现在子弹可以同步啦,但是打到另外一个玩家,子弹被它的铁布衫给反弹走了,好吧,接下来我们去掉这一逆天的武功。

注:

在这里简单借鉴下官方介绍[Command]的概念

[Command]属性表示以下函数将被客户端调用,将在服务端上运行。函数中的任何参数都将自动通过Command.Command传递给服务器,只能从本地玩家对象发送命令。在网络游戏中,会在服务端和所有的客户端产生的游戏对象,服务端有专门负责进行管理的底层脚本,当服务端的数据发生变化,就是传输给所有的客户端,它们也随着改变。当客户端发送销毁等指令的时候,服务端也执行这些特殊的方法,并将数据发送给所有的客户端,即便是你刚进入游戏,也能看到所有的变化。

为了去掉玩家的铁布衫,需要给玩家添加下生命值和相关的碰撞检测,让角色具有生死的概念,当然还是比人多了条复活的技能。

首先,我们在Scripts文件夹里面新建一个脚本,重命名

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值