一:编辑动画状态机

例如一个敌人有上下左右移动的动画,则需要编辑四种方向的动画并制作动画控制机

并设置状态机的参数(这里是两个float类型变量h与v)

二:编辑路径点

手动添加模拟的路径点,敌人依次遍历这些路径点去移动

三:编写敌人移动的方法

加载路径点,依次添加到路径点集合中(添加自身位置到第一个点和最后一个点,使其可以循环移动)

遍历路径点,依次朝下一个路径点移动并且设置状态机的数值。

若要实现多个敌人一开始的路线不同,则需要在一个管理类中随机生成一个路径下标数组,在敌人脚本中随机得到usingIndex列表中的数值

——————————完整代码

using UnityEngine;
using System.Collections.Generic;public class Enemy : MonoBehaviour
{public float speed;//速度public GameObject[] ways;//路径private List<Vector3> wayPoints;//所有路径点private int index;//下标点private Vector3 startPos;//起始点private Rigidbody2D rigi;//刚体组件private Animator ani;//动画机组件private void Start(){ani = GetComponent<Animator>();rigi = GetComponent<Rigidbody2D>();startPos = transform.position;//开始时加载一个路径点LoadPath(ways[Random.Range(0, 2)]);}private void FixedUpdate(){Move();}//移动private void Move(){if (transform.position != wayPoints[index]){Vector2 des = Vector2.MoveTowards(transform.position, wayPoints[index], speed * Time.deltaTime);rigi.MovePosition(des);}else{index = (index + 1) % wayPoints.Count;}//播放动画PlayAni();}//播放动画private void PlayAni(){Vector2 dir = wayPoints[index] - transform.position;ani.SetFloat("h", dir.x);ani.SetFloat("v", dir.y);}//加载路线private void LoadPath(GameObject go){if (wayPoints == null){wayPoints = new List<Vector3>();}wayPoints.Clear();foreach (Transform t in go.transform){wayPoints.Add(t.position);}wayPoints.Insert(0, startPos);wayPoints.Add(startPos);}
}

Unity中实现敌人固定路线寻路相关推荐

  1. 如何在Unity中实现AStar寻路算法及地图编辑器

    文章目录 AStar算法 简介 实现 Node节点 节点间的估价 算法核心 邻节点的搜索方式 地图编辑器 简介 实现 绘制地图网格 障碍/可行走区域 地图数据存储 AStar算法 简介 Unity中提 ...

  2. 【Unity3D Shader编程】之五 圣诞夜篇 Unity中Shader的三种形态对比 混合操作合辑

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  3. 如何理解Unity中Time.deltatime

    首先,Time.deltatime通常在Update()方法中被调用 Update()方法的特性便是每帧执行一次,而Update()调用的速率与帧速率有关,而帧速率是不断变化的,帧速率的高低与设备本身 ...

  4. unity中3dUI或者模型始终面向摄像机,跟随摄像机视角旋转丨视角跟随丨固定视角

    视角跟随 本脚本为一个目标跟随 unity中3dUI或者模型始终面向摄像机,跟随摄像机视角旋转 使用方法超级简单,对于一个资深的Ctrl+cv程序极为友好 不多讲解直接上代码 代码模块 public ...

  5. 【Unity】6.1 Unity中的C#脚本基础知识

    分类:Unity.C#.VS2015 创建日期:2016-04-16 一.简介 1.常用的C#数据类型 这里简单介绍用Unity开发游戏时,最常用的一些数据类型. (1)基本类型 int.float. ...

  6. 在unity中创建python机器学习环境

    # 创建一个新的学习环境 本教程将介绍创建unity环境的过程 unity环境是使用unity引擎来训练增强学习代理器的应用 设置unity项目 1. 打开一个项目导入unity机器学习包, 或者新建 ...

  7. unity中mathf.Lerp的运用

    在unity3d中经常用线性插值函数Lerp()来在两者之间插值,两者之间可以是两个材质之间.两个向量之间.两个浮点数之间.两个颜色之间,其函数原型如下: 1.Material.Lerp 插值 fun ...

  8. Unity中的布料系统

    0. 前言 项目技术测试结束之后,各种美术效果提升的需求逐渐成为后续开发的重点,角色效果部分的提升目标之一便是在角色选择/展示界面为玩家提供更高的品质感,于是可以提供动态效果的布料系统就作为了技术预研 ...

  9. 使用新的输入系统在 Unity 中构建第三人称控制器

    如果你随机挑选几款游戏,每款游戏可能会有不同的艺术风格和机制.不同的故事,甚至根本没有故事,但它们都有一个共同点:所有游戏都需要读取和处理输入来自键盘.鼠标.游戏手柄.操纵杆.VR 控制器等设备. 构 ...

最新文章

  1. TensorFlow中Session.run和Tensor.eval的区别
  2. 专访4秒源码商城CTO陈杰:扎根互联网的“不安的心”
  3. android 过滤数组中的重复元素,Flutter List数组避免插入重复数据的实现
  4. targetFilterLifecycle的作用
  5. @configuration注解_Spring注解@Configuration
  6. 「HDU6583 Typewriter」 - 后缀自动机
  7. VScode配置C/C++环境以及stdafx.h报错解决方法
  8. java poi 自动行高,20191012——POI设置单元格自动行高(思路)
  9. 使用dockerfile创建一个包含jdk和tomcat的镜像
  10. 为什么ios比android流畅
  11. Clickhouse:日志表占用大量磁盘空间怎么办?
  12. ye读春秋左传系列视频讲解
  13. vue无法加载文件C:\Users\Administrator\AppData\Roaming\npm\vue.ps1因为在此系统上禁止运行脚本……解决办法
  14. Word文件不能编辑是什么原因?
  15. Network Slimming——有效的通道剪枝方法(Channel Pruning)
  16. 2011推荐系统论坛游记:爱的反义词不是恨
  17. HENGSHI SENSE 4.0 预置明道云连接器,实现更灵活的数据自动传输
  18. 2022-2028年中国城市轨道交通运维检修行业市场专项调研及竞争战略分析报告
  19. 读书笔记:《理性的非理性:人人都需要的十堂营销心理课》
  20. 大学生计算机专业应聘简历,大学生计算机专业应聘简历模板

热门文章

  1. python多进程和多线程一起使用_Python干货:多进程与多线程!
  2. TypeScript declare
  3. Vue学习计划十:了解Vue服务器渲染以及Vue-SSR使用方法
  4. Android进阶——ExoPlayer源码分析之宽带预测策略的算法详解
  5. 中国前五国产数据库特性比较
  6. java实现动态展示当前时间,在文本框中动态地显示当前时间,有木有人做过,指导下初学者...
  7. 【图像处理】图像视频压缩编码技术综述
  8. WIN7下QQ概念版使用手记
  9. 电脑C盘满了,怎么清理c盘空间?
  10. 五大最罕见畸形动物:双头猫获吉尼斯纪录