Unity 2D塔防
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塔防相关推荐
- 使用Unity创建塔防游戏(Part2)
How to Create a Tower Defense Game in Unity – Part 2 原文地址:https://www.raywenderlich.com/107529/unity ...
- 使用Unity创建塔防游戏(Part1)
How to Create a Tower Defense Game in Unity - Part1 原文作者:Barbara Reichart 文章原译:http://www.cnblogs.co ...
- 基于XNA 3.1 的2D塔防游戏——守卫家园
基于XNA 3.1 的2D游戏--守卫家园.经过了近一个月的开发,将基本的游戏逻辑实现了.玩过皇家守卫军(KingdomRush)的会发现其实是模仿皇家守卫军做的,当然,游戏的完整度还差了很多,并且有 ...
- HTML5塔防游戏——《三国塔防》 - Yorhom's Game Box
HTML5塔防游戏--<三国塔防> 游戏介绍: <三国塔防>是一款基于HTML5和Javascript的2D塔防游戏.游戏中除了塔防游戏中原本的一些基本功能,还加入了武将单挑, ...
- unity塔防游戏怪物转向_Unity官方新手游戏项目推荐合集
Unity官方新手游戏项目推荐合集 今天给同学们介绍一些Unity官方发布过的一些游戏项目,这些项目都简化了游戏开发的入门学习过程,可以快速地制作出游戏,适合新手入门体验,下面就带同学们看一看: Un ...
- 如何在unity中制作塔防游戏
塔防游戏非常流行,毫无疑问--没有什么比看着自己的防御消灭讨厌的侵略者更让人满足!在这两部分教程中,用unity来制作一个塔防游戏! 将会学习怎样...... 创建一波敌人 让它们跟随线路点 ...
- Unity塔防游戏的制作与实现
一.游戏场景的搭建 首先,我们需要创建一个新的Unity场景,并将场景设置为2D模式.然后,我们需要导入一些必要的素材,如地图.塔.怪物.子弹等.我们可以从Unity Asset Store中下载这些 ...
- 【Unity小游戏】游戏开发案例,轻松打造一款塔防游戏!(下)
欢迎来到如何在 Unity 中创建塔防游戏的第二部分.你正在Unity中制作一个塔防游戏,在第一部分结束时,你可以放置和升级怪物.你还有一个敌人攻击饼干. 然而,敌人不知道该面对哪条路!此外,这是攻击 ...
- 用Unity开发一款塔防游戏(一):攻击方设计
大家好.偶尔想起了这个手把手教学的.但现已长满杂草的坑,还是来挖几铲子. 这一期的游戏是最常见的类型之一--塔防. 塔防游戏相信大家并不陌生,几个主要元素如下: 1.敌方士兵 2.我方防御塔 3.我方 ...
最新文章
- AAAI-19 日程 安排
- 安装 Docker 一
- Mysql的垂直分表-新建
- java jpa @joincolumn 字段不为空_拥抱开源从表设计到 JPA 实现
- Redis 集合(Set)
- 详细到没朋友,一文帮你理清Linux 用户与用户组关系~
- C++ : 自写两个字符串分割函数(含测试程序)
- apt编译java_自动生成代码工具--APT
- 中小企业怎样转型做跨境电商独立站?
- [逆向破解]lua脚本解密
- qt Android 基站定位,AT指令获取基站信息
- 计算机的操作系统是什么与什么的接口,计算机中操作系统是什么的接口
- 电线对接和端接为什么要使用连接器?
- 为什么大学生活这么充实(累)
- 蓝色箭头间隔css导航菜单代码
- 数据库导入表时出错:Importing tables....errors detected(see log page)
- 应用程序正常初始化(0xc150002)失败
- 国睿驰120gb固态硬盘测试软件,小巧极速 国睿驰精睿系列移动SSD评测
- 求解二阶偏微分方程c语言,科学网—求解偏微分方程开源有限元软件deal.II学习--Step 3 - 亓欣波的博文...
- android如何给整个视图view圆角显示
热门文章
- 大厂对外提供的API接口入参命名规范
- AB COMPACTLOGIX调试步骤
- 理解--漏极开路输出--推挽输出
- 单片机节日彩灯实训报告_单片机数字钟实训报告
- JSON基础入门实战讲解在线视频课程-JSON语法规则,json对象,json数组的定义和使用
- 航空发动机风扇叶片的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 为什么说 Windows 10 不会被 DDoS SSDP反射攻击利用
- MapReduce之起源篇
- pwrkey直接接地 sim7020_SIM7020C NB-IoT HAT
- 认识计算机微课 百度云,微课认识计算机.ppt