Unity---Unet05---玩家的生成位置设置和敌人的生成

在上一篇的Health脚本的最后一个方法里:

Unity---Unet05---玩家的生成位置设置和敌人的生成_第1张图片

我们设置了玩家的重生位置设置,为这个方法添加[ClientRpc]特性,表示代码在执行在客户端。但是又服务器调用,这样就相当于从服务器广播位置信息,使得客户端的位置信息始终同步,我们还需要在Unity做如下修改:

首先我们在Unity里面指定玩家的重生位置,然后给设定的位置添加如下组件:

Unity---Unet05---玩家的生成位置设置和敌人的生成_第2张图片

然后在NetworkManager里面设置如下:

Unity---Unet05---玩家的生成位置设置和敌人的生成_第3张图片

这样,当游戏开始时,玩家的位置就在我们设定好的位置了。

下面我们为游戏添加一些敌人使得游戏稍微丰富一些:

首先创建一个空物体并添加EnemySpawn脚本用来生成敌人:

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

public class EnemySpawn : NetworkBehaviour
{

    public GameObject EnemyPre;
    public int EnemyCount;


    public override void OnStartServer()
    {
        CmdSpawnEnemy();
    }

    //private void Start()
    //{
    //    CmdSpawnEnemy();
    //}

    //[Command]
    public void CmdSpawnEnemy()
    {
        for (int i = 0; i < EnemyCount; i++)
        {
            Vector3 pos = new Vector3(EnemyPre.transform.position.x + Random.Range(-6, 6), EnemyPre.transform.position.y, EnemyPre.transform.position.z + Random.Range(-6, 6));
            GameObject enemy = GameObject.Instantiate(EnemyPre, pos, EnemyPre.transform.rotation);
            enemy.transform.rotation = Quaternion.Euler(0, Random.Range(0, 180), 0);
            NetworkServer.Spawn(enemy);
        }
    }


}

上面的脚本中,既可以直接重写 public override void OnStartServer()方法在服务器生成敌人也可以使用[Command]指令,在客户端Start()方法里面调用方法。

下面是制作敌人的预制:

Unity---Unet05---玩家的生成位置设置和敌人的生成_第4张图片
 敌人需要有Health脚本进行血量的控制,NetworkIdentity和Player一致

Unity---Unet05---玩家的生成位置设置和敌人的生成_第5张图片

下面运行起来:

Unity---Unet05---玩家的生成位置设置和敌人的生成_第6张图片

OK,到此Unet的简单学习就完了,后面会就Unet做一个比较深入的了解

欢迎加群:4364930讨论。

你可能感兴趣的:(Unet)