本课程的地址:
第一节.www.jianshu.com/p/d4e35e547081
第二节:www.jianshu.com/p/d7481e83317c
第五节:www.jianshu.com/p/cb034b4c317d
第六节:www.jianshu.com/p/c58c1a888595
第七节:www.jianshu.com/p/b8cc2d15e2b5
第八节:www.jianshu.com/p/9f8f18a46266
因为我们的两个游戏运行起来以后,角色都是一个预制体生成的,所以一会我们就得靠移动位置,才能知道哪个是自己的角色。如果在玩游戏的时候,我们需要识别自己控制得角色怎么办呢?让我们简单地加个颜色来区分吧!
首先,打开PlayerController脚本,添加 OnStartLocalPlayer方法(OnStartLocalPlayer方法是进行基于虚方法而重写的方法,只能用于本地玩家,比如配置摄像头和输入。)。具体如下:
添加代码保存,然后重新生成并运行游戏选择 LAN Host,再把unity也运行起来选择LAN Client进入游戏。可以发现我们控制的游戏的那个角色变成了蓝色,但是别的还是白色。
这样子的ok,退出游戏,别忘了保存下。
接下来,我们让角色发射子弹,还是老样子,先实现单机功能再进行网络化改造。
先做子弹,在Hierarchy面板右键,新建Sphere球体,重命名为Bullet,选中它,调整scale 缩放至(0.2, 0.2, 0.2),然后,添加刚体组件,取消重力,拖到Prefabs文件夹里面生成子弹预制体,删掉Hierarchy的Bullet。
保存游戏。打开 PlayerController脚本编辑,为了让大家动手,我做成了gif。
脚本保存脚本,回到Unity,在prefabs文件夹中选中Player预制,把Player预制拖拽到Hierarchy里面,选中它,新建Cylinder圆柱体,重命名为:Gun,选中Gun,在属性面板删除掉 碰撞体组件Capsule Collider,
改变位置 Position至:(0.5, 0.0, 0.5),改变旋转Rotation至(90.0, 0.0, 0.0),改变缩放Scale至(0.25, 0.5, 0.25),将其材质设置为:Black,最后是这样子的:
选中Player,右键新建空物体empty GameObject,重命名为:Bullet Spawn,设置Position位置为(0.5, 0.0, 1.0),就是枪口的位置。最后,也是最重要的一步选中Player:点击右边属性面板中上面的apply按钮
拖拽子弹预制和Bullet Spawn的空物体分别添加到Player属性面板中脚本定义的两个空地方 Bullet Prefab、BulletSpawn
删除Hierarchy层次视图中的Player,保存游戏。再次重新生成游戏,运行选择LAN Host 进入游戏,回到Unity运行游戏,选择LAN Client 开始联网。按空格发射子弹,你会发现,只能在本地发射,因为子弹还没有进行同步。
网友评论