1.敌人和玩家若存活,敌人始终朝着玩家所在位置移动,所以要给玩家物体一个Tag:Player从而找到玩家

2.敌人的自动寻路使用Unity自带的NavMeshAgent寻路组件寻路,要先把场景中不动的物体勾选Static,然后Navigation-Bake烘焙

移动 代码如下:

  1. public class EnemyMovement : MonoBehaviour
  2. {
  3. Transform player; // 玩家位置变量.
  4. PlayerHealth playerHealth; // 玩家生命脚本
  5. EnemyHealth enemyHealth; // 敌人生命脚本
  6. UnityEngine.AI.NavMeshAgent nav; //敌人身上寻路组件
  7.  
  8. void Awake ()
  9. {
  10. // 获取组件
  11. player = GameObject.FindGameObjectWithTag ("Player").transform; //根据Tag找到玩家
  12. playerHealth = player.GetComponent <PlayerHealth> ();
  13. enemyHealth = GetComponent <EnemyHealth> ();
  14. nav = GetComponent <UnityEngine.AI.NavMeshAgent> ();//获取物体身上寻路组件
  15. }
  16.  
  17. void Update ()
  18. {
  19. // 如果主角和敌人都存活
  20. if(enemyHealth.currentHealth > 0 && playerHealth.currentHealth > 0)
  21. {
  22. // 使用寻路组件朝玩家位置寻路
  23. nav.SetDestination (player.position);
  24. }
  25. else
  26. {
  27. //主角或敌人死亡,停止寻路,禁用寻路组件
  28. nav.enabled = false;
  29. }
  30. }
  31. }

3.敌人小怪身上状态机:默认移动,始终朝着敌人移动;直到玩家死亡,才切换到待机状态

4.小怪身上挂刚体组件,Drag和Angular Drag都设置为Inf无限大,使用重力取消物理属性。勾选禁用Y方向移动和XZ方向旋转

5.小怪身上加CapsuleCollider组件,调整适配,不勾选IsTrigger

6.小怪身上加大一点的SphereCollider组件,勾选IsTrigger,作为进入攻击玩家范围的触发判断用

注意:

7.本例中有三种怪,其中两种怪是用的一套动画,而大象是单独一套动画

但是,大象的动画状态机和其他的是一个逻辑,所以为了复用状态参数以及状态机的逻辑,不新建AnimatorController,而是

复用状态机:AnimatorOverrideController(针对动画不同,但是状态机逻辑与参数都相同的情况:如多种角色)

Controller拖入复用的源状态机,然后分别拖入相应动画:

因此需要注意,父AC的改变会影响override的AC。

SurvivalShooter学习笔记(三.敌人移动)的更多相关文章

  1. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  2. [Firefly引擎][学习笔记三][已完结]所需模块封装

    原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读:        笔记三主要就是各个模块的封装了,这里贴 ...

  3. JSP学习笔记(三):简单的Tomcat Web服务器

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  4. java之jvm学习笔记三(Class文件检验器)

    java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...

  5. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  6. Java IO学习笔记三

    Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...

  7. NumPy学习笔记 三 股票价格

    NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...

  8. Learning ROS for Robotics Programming Second Edition学习笔记(三) 补充 hector_slam

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  9. Learning ROS for Robotics Programming Second Edition学习笔记(三) indigo rplidar rviz slam

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  10. Typescript 学习笔记三:函数

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

随机推荐

  1. windows下检測软件的网络连接

    首先打开任务管理器选中你要查看的应用.右键转到进程 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGFwZW5nMDExMg==/font/5a6L5L2 ...

  2. SSH面试题目

    一简答 spring工作原理 为什么要用spring 3.请你谈谈SSH整合 4.介绍一下Spring的事务管理 5.Struct2基本流程 6.在Hibernate应用中Java对象的状态有哪些? ...

  3. Caused by: java.lang.NoSuchMethodError: javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/

    Caused by: Java.lang.NoSuchMethodError: javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ ...

  4. 关于Xcode正确运行swift多线程

    想跳过废话直接看解决方案的可以点击这里直接跳转,我这人写博客喜欢瞎逼逼. 还有一些我看过的不错的多线程资料,在此给出链接,点击这里直接跳转查看. 近来为了做操作系统课程设计,不得不去学习了下多线程. ...

  5. JUC之AQS

    AbstractQueuedSynchronizer(AQS) AQS是并发容器里的同步器,从jdk1.5开始引入了并发包,java.util.concurrent,提供了一个基于first in f ...

  6. 测试-一个unity的编译bug,初始化器

    .net C#下测试: public class Class1 { public bool toggle1 = true; public bool toggle2; } 一个结构类Class1,对里面 ...

  7. url中的查询字符串的参数解析

    <script> // 查询字符串函数location.search;"?q=javascript" function getQueryStringArgs(){ // ...

  8. Redis 的 fields 遇到的问题

    问题描述:本地和测试环境同使用一台redis服务器,本地环境和测试环境使用 key,fileds,value 中的fileds 来区分,例如 key fields value 004920c6eba1 ...

  9. wordpress之备份与恢复数据

    备份:mysqldump -u root -p wordpress > "d:/wordpress.sql" 恢复:mysql -u root -p < "c ...

  10. CentOS6.2下Qt5.1.0无法输入中文

    因为在程序中需要在界面上输入中文,但是系统是英文系统,没有预装中文输入法,于是从网上搜了一下输入法的安装,但是输入法安装好之后,可以再系统中输入中文,但是却无法再Qt中输入中文,只能继续找解决办法 安 ...