僵尸生成和排序
僵尸的基本逻辑前面已经实现,本次要实现僵尸的生成排序等问题
,防止出现僵尸重叠模型的闪烁问题
创建预制体
[Header("僵尸")]
[Tooltip("僵尸头")]
public GameObject Zombie_Head;
[Tooltip("普通僵尸")]
public GameObject Zombie;
public void Init(int lineNum,int orderNum)
{
InitAnimationName();
Find();
GetGirdByVerticalNum(lineNum);
CheckOrder(orderNum);
}
Zombie类
private void CheckOrder(int orderNum)
{
//在那条草坪,越接近0越大,0(0-99)-4(400-499)
int startNum = 0;
switch ((int)currGrid.Point.y)
{
case 0:
startNum = 400;
break;
case 1:
startNum = 300;
break;
case 2:
startNum = 200;
break;
case 3:
startNum = 100;
break;
case 4:
startNum = 0;
break;
}
spriteRenderer.sortingOrder = startNum + orderNum;
}
ZombieManager类
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ZombieManager : MonoBehaviour
{
public static ZombieManager Instance;
private List<Zombie> zombies = new List<Zombie>();
private int currOrderNum = 0;
public int CurrOrderNum { get => currOrderNum;
set {
currOrderNum = value;
if (value > 50)
{
currOrderNum = 0;
}
}
}
private void Awake()
{
Instance = this;
}
private void Start()
{
CreateZombie(0);
CreateZombie(0);
CreateZombie(1);
CreateZombie(2);
}
private void CreateZombie(int lineNum)
{
Zombie zombie=GameObject.Instantiate<GameObject>(GameManager.Instance.GameConf.Zombie,new Vector3(7.3F,0,0), Quaternion.identity, transform).GetComponent<Zombie>();
AddZombie(zombie);
zombie.Init(lineNum,CurrOrderNum);
currOrderNum++;
}
public void AddZombie(Zombie zombie)
{
zombies.Add(zombie);
}