!!一定要记得把ZomBear和Hellephant的Layer设置为 Shootable
(我说为啥他们打不死= = ,忘记设置shootable了)
1.添加另外一种enemy:Zombear。
由于Zombear和之前的Bunny有相同的骨骼、动画等,因此很多bunny的东西都可以复用
2.把Zombear设置成Prefabs,并把Zombear拖到Hierarchy上
3.之前写的EnemyAC可以再次用到Zombear上。
4.把Zombunny的其他属性复制粘贴到Zombear,包括Scripts
5.添加最后一种enemy:Elephant
为了避免重复设置之前的参数,这里我们使用:Animator override controller
你可以在游戏中创建一大堆角色不同的类,他们有相同的骨骼,可以用相同的状态机表示,只需要改变他们的动画即可。
命名为hellelphantAOC
把EnemyAC拖到hellelphantAOC的Controller里。
由于elephant和前面两种enemy有相同的动作逻辑,我们只需要改变不同动作的动画即可。把elephant对应的Death,Idle,Move拖到Override里头:
6.同理把elephent设置为prefabs(拖进Prefabs文件夹),把hellelphantAOC脱欧到elephant的Animator里:
7.同理,把Zombunny的其他属性复制粘贴到elephant,包括Scripts
8.建立一个EnemyManager(GameObject)用于生成并管理enemy,记得把位置reset到(0,0,0)
并添加脚本:
using UnityEngine;
public class EnemyManager : MonoBehaviour
{
public PlayerHealth playerHealth;//在playerHealth>0时才生成enemy-
public GameObject enemy;//任意一种enemy
public float spawnTime = 3f;//这种enemy的生成时间间隔
public Transform[] spawnPoints;//enmemy的生成位置
void Start ()
{
InvokeRepeating ("Spawn", spawnTime, spawnTime);
}
void Spawn ()
{
if(playerHealth.currentHealth <= 0f)
{
return;
}
int spawnPointIndex = Random.Range (0, spawnPoints.Length);//随意选一个生成位置
Instantiate (enemy, spawnPoints[spawnPointIndex].position, spawnPoints[spawnPointIndex].rotation);//生成enemy
}
}
游戏从3个位置生成3种不同的enemy
为3种enemy添加SpawnPoint,并g给每种SpawnPoint添加颜色标记:
BunnySpawnPoint:
BearSpawnPoint:
HellephantSpawnPoint:
9.把3个SpawnPoint拖入3个EnemyManager.cs里