首先我们导入游戏需要的资源: 导入之后我们可以在项目中看到我们的塔防游戏的资源 我们首先将Resource文件里面的主要的游戏场景EVE拖入到我们的主场景中 然后我们利用导航网格的方法来控制怪物的行进路线,禁用掉原路线WayPoint,然后对整个场景进行烘焙,将EVE设置为Static静态环境。 然后选择Window菜单AI里面的Navigation,然后选择Bake进行烘焙 然后我们拖入一个怪物Zombie_1到场景中,给怪物添加一个Nav Mesh Agent的组件让怪物按照烘焙出来的路进行移动 设置Nav Mesh Agent组件的属性,让他的半径和高度贴合怪物本身的大小,然后新建脚本,将脚本放置在怪物对象上,控制怪物进行移动。 这里我们设置了一个全局变量targetPos,就是怪物要移动的最终目标点,我们新建一个Gameobject,命名为TargetPos,放置到场景对象EVE中,并且我们将TargetPos移动到怪物1的脚本组件的targetPos变量上,这样就可以对之前目标位置进行赋值。 然后运行测试一下结果,我们可以看到怪物动起来了,朝着最终目标进行移动: 我们现在实现了怪物的行走,那么现在只需要让怪物在刷怪点固定出现就可以了,新机哪一个Gameobject命名为Gamemanage,赋予怪物初始的位置信息。 然后新建一个脚本EnemyIncubator用来作为怪物孵化器,设置怪物波次的一些信息。 将脚本挂载到 Gamemanage对象上,并拖动prefabs里面的zombie1-5对enemy数组进行赋值 需要注意的是,这些zombie都需要挂载EnemyAI这个脚本,用来控制怪物的行走,并且都需要添加Nav Mesh Agent组件。 接下来我们完成了行走与波次的功能,需要设置行走的动画,我们新建一个文件夹,加入动画控制器并放到怪物1身上。 接着我们调出window里面的animator窗口,找到资源里面的zombie的animation里面的动作,将这些动作拖入到animator窗口组成一系列动作。右键初始动作idel,与第二个动作进行连接,然后右键第二个动作进行连接,设置animation参数为真,并命名为Run,然后点击连接的线,设置has exit time为未勾选,添加conditions,向右箭头为true,向左箭头为false,同理设置另外四个怪物分别的animator controller。这里需要注意双击walk动作,设置为loop,这样动作就可以循环播放。 EnemyAI这个脚本代码如下: 然后就可以实现怪物孵化器与行走动作的功能(以2波,每波5个怪物为例): 炮台的UI主要涉及到了UI的制作问题,我们可以直接在场景右键新建UI->Canvas,然后右键Canvas新建一个空物体用来存放图片,然后导入炮塔的图片,设置图片属性为sprite。然后分别右键创建四个UI->Image,设置源为我们导入的炮塔图片,最后设置一个取消图片。 然后调节UI的大小,让他能够在游戏画面中以适当的大小显示出来,最终效果如下:1、导入资源
2、烘焙场景,制作怪物移动路线
3、怪物孵化器及动画状态机的制作
using System.Collections; using System.Collections.Generic; using UnityEngine; public class EnemyIncubator : MonoBehaviour { public GameObject[] enemys; private float time;//每波间隔时间 private float times;//每个怪物间隔时间 private float count;//怪物波次 private float counts;//一波怪物个数 // Start is called before the first frame update void Start() { time = 2; times = 1; count = 2; counts = 5; StartCoroutine(CreateEnemy()); } // Update is called once per frame void Update() { } private IEnumerator CreateEnemy() { for(int i=0;i<count;i++) { for(int j=0;j<counts;j++) { Instantiate(enemys[Random.Range(0,enemys.Length)],transform.position,Quaternion.identity);//生成怪物 yield return new WaitForSeconds(times); } yield return new WaitForSeconds(time); } } }
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class EnemyAI : MonoBehaviour { private NavMeshAgent agent; private Transform targetPos;//得到目的地位置信息 private Animator ani;//得到行走动画信息 // Start is called before the first frame update void Start() { agent = GetComponent<NavMeshAgent>(); ani = GetComponent <Animator>(); targetPos = GameObject.Find("TargetPos").transform; } // Update is called once per frame void Update() { agent.destination = targetPos.position; if(agent.isStopped) { ani.SetBool("Run", false); } else { ani.SetBool("Run", true); } } }
4、创建炮台的UI制作
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算