27781人加入学习
(125人评价)
如何制作塔防游戏(基于Unity5.5)
价格 免费

课时7 创建敌人生成器 

创建多种不同类型的敌人

敌人一波一波的生成,针对每一波生成需要的属性,进行定义

 

[System.Serializable] //表示可以序列化

public class Wawe()//只保存每波敌人的属性不继承于Monodevelop

{

public GameObject enemyPrefab;//敌人的类型

public int count;//敌人的数量

public float rate;//等待时间

}

创建敌人管理器

EnemyManager()

{

public Transform start;//生成的开始位置

public Wawe[] wawes;//多少波敌人的数组

void Start()

{

  startCoroutine(ManageEnemy());//在start函数中启动协程

}

IEnumberator ManageEnemy()

{

 foreach(Wawe wawe in waves)

 {

  for (int i = 0;i<wawe.count;i++)

   {

    GameObject.Instantiate(wave.enemyPrefab,start.position,Quaternion.identity);

if(i != wave.count-1)

   yield return new        WaitForSeconds(wave.rate);//如果他不是最后一个才进行暂停

   }

yield return new WaitForSeconds(3.0f);//每生成一波之后暂停一下

 }

}

}

[展开全文]
侯中斌 · 2016-12-25 · 该任务已被删除 0

课时6 创建敌人 控制敌人移动

去除start和end的碰撞体,避免他们和我们的敌人发生碰撞

Enemy()

{

 Transform[] position;

 int index = 0;

void Start()

 {

  position = WayPoint.position;

 }

 

void Update()

{

  Move();

}

void Move()

{

if(index >= position.Length -1)

   return;

 transform.translate((position[index].position - transform.position).normalized*speed*time.deltaTime)

if(vector3.Distance(position[index].position,transform.position)<0.1f)

{

  index++;

}

}

}

获取路径点,路径点索引从0开始到最后,超过索引,就什么都不做,没有超过就执行移动脚本。

[展开全文]
侯中斌 · 2016-12-25 · 该任务已被删除 0

课时5 敌人路径管理

路径点:

WayPoint 用空物体,在关键转折点摆放位置。

创建路径点,路径点

public static TransForm[] position;

void Awake()

{

  position = new Transform[transform.ChildCount];

for(int i =0,i < position.Length;i++)

{

   position[i] = transform.GetChild(i);

}

}

 

获取他的儿子 GetChild()

 

[展开全文]
侯中斌 · 2016-12-24 · 该任务已被删除 0

MainCamera 控制摄像机的移动和缩放

ViweController()

{

float h = input.GetAxis("Horizontal");

float v = input.GetAxis("Vertical");

transform.translate(new Vector3(h,mouse,v)*time.deltatime*speed,Space.World);//世界坐标系

float mouse = input.GetAxis("Mouse ScrollWheel");//鼠标滑轮

}

需要记住的:物体移动,可以通过水平,垂直一步控制他的缩放和移动。

鼠标滚轮的值0-1

[展开全文]
侯中斌 · 2016-12-25 · 该任务已被删除 0

using UnityEngine;
using System.Collections;

public class ViewController : MonoBehaviour {
    public float speed = 1;
    public float MouseSpeed = 60; 
    // Update is called once per frame
    void Update () {
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
        float mouse = Input.GetAxis("Mouse ScrollWheel");
        transform.Translate(new Vector3(h*speed, mouse*MouseSpeed, v*speed)*Time.deltaTime,Space.World);

    
    }
}

[展开全文]
Anxuanzi2016 · 2016-12-23 · 该任务已被删除 0