学习笔记——使用Unity Network组件开发联机游戏

文章目录

  • 前言
  • 一、创建玩家预制体
  • 二、使用Network组件
  • 总结


前言

使用unity中的Network组件开发一个简单的多人在线游戏
unity版本:2018.4.16


一、创建玩家预制体

1.创建地面
2.在Hierarchy面板创建cube作为玩家,加入刚体组件Rigidbody。
3.diver脚本控制玩家上下左右前进,挂载到player上。

//drive脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;

public class drive : MonoBehaviour
{
    public float rotateSpeed = 150;
    public float moveSpeed = 6;

    private void Update()
    {
        //if (isLocalPlayer == false) return;
        var x = Input.GetAxis("Horizontal") * Time.deltaTime * rotateSpeed;
        var z = Input.GetAxis("Vertical") * Time.deltaTime * moveSpeed;

        transform.Rotate(0, x, 0);
        transform.Translate(0, 0, z);
    }
    
}

4.在玩家上方增添文字,挂载脚本解决移动后文字不动的问题,使文字永远朝向摄像机。

//文字脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FaceCamera : MonoBehaviour
{
    void Update()
    {
        this.transform.LookAt(Camera.main.transform.position);
        this.transform.Rotate(new Vector3(0, 180, 0));//面向相机沿y轴翻转180度
    }
}

5.将Hierarchy面板中的player组件拖拽到assets文件夹内,作为预制件。
学习笔记——使用Unity Network组件开发联机游戏_第1张图片
6.将Hierarchy面板中的player删除即可。

二、使用Network组件

1.点击assets中的玩家预制件,添加Network Identity组件和Network Transform组件。在Network Identity中勾选LocalPlayerAuthorit,在Network Transform->Transform Sync Mod选择Sync Transform。
学习笔记——使用Unity Network组件开发联机游戏_第2张图片
学习笔记——使用Unity Network组件开发联机游戏_第3张图片

2.然后在Hierarchy面板新建一个空物体命名为Network,存放Network控制组件,添加Network Manager组件和Network Manager HUD组件作为控制面板。运行即可看到网络控制面板。
学习笔记——使用Unity Network组件开发联机游戏_第4张图片

3.点击Hierarchy面板中Network空物体,将玩家预制体拖拽到Network Manager->Spawn Info->Player Prefab中。
4.点击LAN运行即可看到自动生成玩家。
5.点击上方File->Build Settings->Build And Run创建一个新窗口。
学习笔记——使用Unity Network组件开发联机游戏_第5张图片
6.运行本地unity选择LAN作为主机,新开窗口点击LAN Client作为客户端加入,可以看到场景内生成两个玩家预制体,但是在一端操作,另一端也会进行同样的操作。
学习笔记——使用Unity Network组件开发联机游戏_第6张图片

7.可以看到控制玩家操作的是drive脚本,我们需要判断当前所控制的是在那个主机,剩下的所有玩家的drive脚本关闭,只保留当前控制玩家的drive脚本。
8.点击玩家预制体,关闭drive脚本。
学习笔记——使用Unity Network组件开发联机游戏_第7张图片
9.新建SetupLocalPlayer脚本进行判断,将其挂载到player玩家预制体上。

//SetupLocalPlayer
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;

public class SetupLocalPlayer : NetworkBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        if (isLocalPlayer)//如果是本地玩家
        {
            GetComponent<drive>().enabled = true;

        }
    }
}

总结

最后可以实现简单的多人游戏互动,目前Network比较古老了,在此做一个学习记录,大家可以使用unity中新的API来实现多人联机。

你可能感兴趣的:(Unity,unity,游戏引擎)