隨意的新建一個物體來當殭屍,記得和平時遊戲添加的敵人一樣,加上NavMeshAgent組件來追蹤玩家
在zombie上添加NetworkIdentity和NetworkTransform,新建腳本Zombie_Target添加到Zombie上,將Zombie作爲一個新的Prefab
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class Zombie_Target : NetworkBehaviour {
private NavMeshAgent agent;
private Transform myTransform;
private Transform targetTransform;
private LayerMask raycastLayer;
private float radius = 100;
// Use this for initialization
void Start ()
{
agent = GetComponent<NavMeshAgent>();
myTransform = transform;
raycastLayer = 1 << LayerMask.NameToLayer("Player");
}
// Update is called once per frame
void Update ()
{
SerachToTarget();
MoverToTarget();
}
void SerachToTarget()
{
if (!isServer)
{
return;
}
if (targetTransform == null)
{
Collider[] hitColliders = Physics.OverlapSphere(myTransform.position, radius, raycastLayer);
if (hitColliders.Length > 0)
{
int randomint = Random.Range(0, hitColliders.Length);
targetTransform = hitColliders[randomint].transform;
}
}
if (targetTransform != null && targetTransform.GetComponent<BoxCollider>().enabled == false)
{
targetTransform = null;
}
}
void MoverToTarget()
{
if (targetTransform != null && isServer)
{
SetNavDestination(targetTransform);
}
}
void SetNavDestination(Transform dest)
{
agent.SetDestination(dest.position);
}
}
新建一個空物體作爲Zombie 的Spawn點
新建腳本GameManaer_ZombieSpawner,添加到GameManager上,同時記得添加一個NetworkIdentity
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class GameManaer_ZombieSpawner : NetworkBehaviour {
[SerializeField]
GameObject zombiePrefab;
[SerializeField]
GameObject zombieSpawn;
private int counter;
private int numberOfZombies = 10;
public override void OnStartServer()
{
for (int i = 0; i < numberOfZombies; i++)
{
SpawnZombie();
}
}
void SpawnZombie()
{
//counter
GameObject go = GameObject.Instantiate(zombiePrefab, zombieSpawn.transform.position, Quaternion.identity) as GameObject;
NetworkServer.Spawn(go);
}
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
}
將對應的ZombiePrefab和ZombieSpawn設置好
接下來記得在NetworkManager中的SpawnInfo的Registered Spawnable Prefabs中添加Zombie的Prefab即可
不過遇到點問題,不知道什麼每次重新打開的時候zombie預製件的註冊又變成了empty的狀態= =怎麼說沒就沒。。。