上 Unity3D塔防游戏开发——学习笔记

1、导入资源
首先我们导入游戏需要的资源:
导入之后我们可以在项目中看到我们的塔防游戏的资源
2、烘焙场景,制作怪物移动路线
我们首先将文件里面的主要的游戏场景EVE拖入到我们的主场景中
然后我们利用导航网格的方法来控制怪物的行进路线,禁用掉原路线,然后对整个场景进行烘焙,将EVE设置为静态环境 。
然后选择菜单AI里面的,然后选择Bake进行烘焙
然后我们拖入一个怪物到场景中,给怪物添加一个Nav Mesh Agent的组件让怪物按照烘焙出来的路进行移动
设置Nav Mesh Agent组件的属性,让他的半径和高度贴合怪物本身的大小,然后新建脚本,将脚本放置在怪物对象上,控制怪物进行移动 。
这里我们设置了一个全局变量,就是怪物要移动的最终目标点,我们新建一个,命名为,放置到场景对象EVE中,并且我们将移动到怪物1的脚本组件的变量上,这样就可以对之前目标位置进行赋值 。
然后运行测试一下结果,我们可以看到怪物动起来了,朝着最终目标进行移动:
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 updatevoid Start(){time = 2;times = 1;count = 2;counts = 5;StartCoroutine(CreateEnemy());}// Update is called once per framevoid Update(){}private IEnumerator CreateEnemy(){for(int i=0;i
将脚本挂载到对象上,并拖动里面的-5对enemy数组进行赋值
需要注意的是,这些都需要挂载这个脚本,用来控制怪物的行走,并且都需要添加Nav Mesh Agent组件 。

上  Unity3D塔防游戏开发——学习笔记

文章插图
接下来我们完成了行走与波次的功能,需要设置行走的动画,我们新建一个文件夹,加入动画控制器并放到怪物1身上 。
接着我们调出里面的窗口,找到资源里面的的里面的动作,将这些动作拖入到窗口组成一系列动作 。右键初始动作idel,与第二个动作进行连接,然后右键第二个动作进行连接,设置参数为真,并命名为Run,然后点击连接的线,设置has exit time为未勾选,添加,向右箭头为true,向左箭头为false,同理设置另外四个怪物分别的。这里需要注意双击walk动作,设置为loop,这样动作就可以循环播放 。
这个脚本代码如下:
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 updatevoid Start(){agent = GetComponent();ani = GetComponent ();targetPos = GameObject.Find("TargetPos").transform;}// Update is called once per framevoid Update(){agent.destination = targetPos.position;if(agent.isStopped){ani.SetBool("Run", false);}else{ani.SetBool("Run", true);}}}
然后就可以实现怪物孵化器与行走动作的功能(以2波,每波5个怪物为例):