1 .怪物的生成

首先需要一个脚本定义怪物类型和变量 :代码如下

public class Wave     //敌人属性
{
    public GameObject Enemy;     //敌人种类
    public int wave;                  //敌人一泼几个
    public float speed;               //出怪间隔

}

然后有一个实例化怪物的脚本

public Transform place;           //出怪点
    public Wave[] waves;               //怪物属性脚本

void Awake()
    {

StartCoroutine("Enemy");

}

IEnumerator Enemy()
    {

foreach (Wave wave in waves)
         {
       
             for (int i = 0; i < wave.wave; ++i)
             {
                 GameObject a = Instantiate(wave.Enemy, place.position, Quaternion.identity, GameObject.Find("LevelMap_1").transform) as GameObject;        //实例化怪物
                 yield return new WaitForSeconds(wave.speed);                                    
 
             }

}

2.2D怪物寻路

使用空物体,摆出一条道路.然后代码便利所有空物体,判断怪物和第一个空物体的距离,当接近相等,就让怪物去找别一个空物体,以此类推,怪物移动就完成了.大概代码如下:

public Transform[] Waydot;            //敌人移动点(空物体)

int Dot=0;                                       //移动点索引

void Update()
    {
        if (Dot > Waydot.Length - 1)        //当怪物移动到最后一个空物体时,
        {
            return;                                      //下面代码就不执行;
        }
      transform.Translate((Waydot[Dot].position - transform.position).normalized * Time.deltaTime * Speed);    //敌人移动

if (Vector2.Distance(Waydot[Dot].position, transform.position) <= 0.1F)
         {
            Dot++;

}

3. 2D怪物转向切换动画

遍历所有空物体,计算相邻两个空物体的X相减,Y相减,判断相减后的X和Y的大小;大概代码如下:

if (Mathf.Abs(Waydot[Dot].position.x - Waydot[Dot - 1].position.x) > Mathf.Abs(Waydot[Dot].position.y - Waydot[Dot - 1].position.y) && Waydot[Dot].position.x - Waydot[Dot - 1].position.x >= 0)

{

//向 右动画

}

if (Mathf.Abs(Waydot[Dot].position.x - Waydot[Dot - 1].position.x) < Mathf.Abs(Waydot[Dot].position.y - Waydot[Dot - 1].position.y) && Waydot[Dot].position.y - Waydot[Dot - 1].position.y >= 0)

{

//向 上动画

}

if (Mathf.Abs(Waydot[Dot].position.x - Waydot[Dot - 1].position.x) > Mathf.Abs(Waydot[Dot].position.y - Waydot[Dot - 1].position.y) && Waydot[Dot].position.x - Waydot[Dot - 1].position.x <= 0)

{

//向左动画

}

if (Mathf.Abs(Waydot[Dot].position.x - Waydot[Dot - 1].position.x) < Mathf.Abs(Waydot[Dot].position.y - Waydot[Dot - 1].position.y) && Waydot[Dot].position.y - Waydot[Dot - 1].position.y <= 0)

{

//向下动画

}

4. 防御塔的建造

首先在地图上摆上你要建塔的位置,建塔点,并加上Circle Collider2D ,给建塔点加一个Tag或Layer,当点击鼠标左键时,从相机发出一条射线,判断是否点击到了建塔点,如果点到了就实例化出一个塔; 代码如下:

int BuildPagodac;                           //   建塔层层

void Start()
    {

BuildPagodac = LayerMask.GetMask("BuildPagoda");                                          //建塔点 标签

}

void Update()
    {
        if (Input.GetMouseButtonDown(0))                                            //如果你点了鼠标左键
        {

Vector2 pos = (Camera.main.ScreenToWorldPoint(Input.mousePosition));                      //从相机发一条射线到鼠标点的位置
            Collider2D BuildPagodacHit = Physics2D.OverlapPoint(pos, BuildPagodac);                   //与建塔点         //检查对撞机是否与空间中的点重叠。

if (BuildPagodacHit)                                                                     //与建塔点  
            {
                //建塔的方法

//也可以在这里实例化塔

}

}

Unity 2D塔防相关推荐

  1. 使用Unity创建塔防游戏(Part2)

    How to Create a Tower Defense Game in Unity – Part 2 原文地址:https://www.raywenderlich.com/107529/unity ...

  2. 使用Unity创建塔防游戏(Part1)

    How to Create a Tower Defense Game in Unity - Part1 原文作者:Barbara Reichart 文章原译:http://www.cnblogs.co ...

  3. 基于XNA 3.1 的2D塔防游戏——守卫家园

    基于XNA 3.1 的2D游戏--守卫家园.经过了近一个月的开发,将基本的游戏逻辑实现了.玩过皇家守卫军(KingdomRush)的会发现其实是模仿皇家守卫军做的,当然,游戏的完整度还差了很多,并且有 ...

  4. HTML5塔防游戏——《三国塔防》 - Yorhom's Game Box

    HTML5塔防游戏--<三国塔防> 游戏介绍: <三国塔防>是一款基于HTML5和Javascript的2D塔防游戏.游戏中除了塔防游戏中原本的一些基本功能,还加入了武将单挑, ...

  5. unity塔防游戏怪物转向_Unity官方新手游戏项目推荐合集

    Unity官方新手游戏项目推荐合集 今天给同学们介绍一些Unity官方发布过的一些游戏项目,这些项目都简化了游戏开发的入门学习过程,可以快速地制作出游戏,适合新手入门体验,下面就带同学们看一看: Un ...

  6. 如何在unity中制作塔防游戏

       塔防游戏非常流行,毫无疑问--没有什么比看着自己的防御消灭讨厌的侵略者更让人满足!在这两部分教程中,用unity来制作一个塔防游戏! 将会学习怎样...... 创建一波敌人 让它们跟随线路点 ...

  7. Unity塔防游戏的制作与实现

    一.游戏场景的搭建 首先,我们需要创建一个新的Unity场景,并将场景设置为2D模式.然后,我们需要导入一些必要的素材,如地图.塔.怪物.子弹等.我们可以从Unity Asset Store中下载这些 ...

  8. 【Unity小游戏】游戏开发案例,轻松打造一款塔防游戏!(下)

    欢迎来到如何在 Unity 中创建塔防游戏的第二部分.你正在Unity中制作一个塔防游戏,在第一部分结束时,你可以放置和升级怪物.你还有一个敌人攻击饼干. 然而,敌人不知道该面对哪条路!此外,这是攻击 ...

  9. 用Unity开发一款塔防游戏(一):攻击方设计

    大家好.偶尔想起了这个手把手教学的.但现已长满杂草的坑,还是来挖几铲子. 这一期的游戏是最常见的类型之一--塔防. 塔防游戏相信大家并不陌生,几个主要元素如下: 1.敌方士兵 2.我方防御塔 3.我方 ...

最新文章

  1. AAAI-19 日程 安排
  2. 安装 Docker 一
  3. Mysql的垂直分表-新建
  4. java jpa @joincolumn 字段不为空_拥抱开源从表设计到 JPA 实现
  5. Redis 集合(Set)
  6. 详细到没朋友,一文帮你理清Linux 用户与用户组关系~
  7. C++ : 自写两个字符串分割函数(含测试程序)
  8. apt编译java_自动生成代码工具--APT
  9. 中小企业怎样转型做跨境电商独立站?
  10. [逆向破解]lua脚本解密
  11. qt Android 基站定位,AT指令获取基站信息
  12. 计算机的操作系统是什么与什么的接口,计算机中操作系统是什么的接口
  13. 电线对接和端接为什么要使用连接器?
  14. 为什么大学生活这么充实(累)
  15. 蓝色箭头间隔css导航菜单代码
  16. 数据库导入表时出错:Importing tables....errors detected(see log page)
  17. 应用程序正常初始化(0xc150002)失败
  18. 国睿驰120gb固态硬盘测试软件,小巧极速 国睿驰精睿系列移动SSD评测
  19. 求解二阶偏微分方程c语言,科学网—求解偏微分方程开源有限元软件deal.II学习--Step 3 - 亓欣波的博文...
  20. android如何给整个视图view圆角显示

热门文章

  1. 大厂对外提供的API接口入参命名规范
  2. AB COMPACTLOGIX调试步骤
  3. 理解--漏极开路输出--推挽输出
  4. 单片机节日彩灯实训报告_单片机数字钟实训报告
  5. JSON基础入门实战讲解在线视频课程-JSON语法规则,json对象,json数组的定义和使用
  6. 航空发动机风扇叶片的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  7. 为什么说 Windows 10 不会被 DDoS SSDP反射攻击利用
  8. MapReduce之起源篇
  9. pwrkey直接接地 sim7020_SIM7020C NB-IoT HAT
  10. 认识计算机微课 百度云,微课认识计算机.ppt