unity有限状态机和模糊状态机(怪物AI、自动寻路)

2023-11-06

自动寻路步骤:

1、把场景中不同的物体勾选static

2、烘培寻路网格

3、添加NavMeshAgent组件

4、给需要寻路的物体添加脚本

游戏中有限状态机的体现:小怪的巡逻和追逐功能

模糊状态机的体现:当玩家离小怪比较近时,小怪会追逐玩家,当玩家离小怪比较远时小怪会停止追逐玩家并且回到出生点,这里的比较近和比较远就是一个模糊概念。在游戏的设计中,是以小怪为圆心,8为半径画圆,当玩家出现在这个范围内,小怪就会追逐玩家,当玩家超出这个范围,小怪就会停止追逐玩家。

1、新建一个plane,window->AI->Navigation,然后在右边就会有Navigation。(如果敌人的路径不是在平面上,选择你要追踪的路径即可,这里是在平面上进行追踪,所以对plane进行烘焙)

 2、点击右侧的Navigation,选中plane,设置参数如下,然后点击Bake,点击右下角的Bake进行烘焙网格。(这里是2018.3.6版本,有些版本的Bake在Object界面,找到Bake进行烘焙即可),烘焙完成后可以看到plane变成下面这个样子,说明烘焙成功。

 3、导入敌人,这里导入的是资源商店中的资源,(下图最上面那个,它包含两个角色,我用到了其中的一个),导入后把预制体拖到场景中,命名为monster,然后修改他的角色控制器(它原有的状态有很多,但是我这里只用到了巡逻和追逐两个状态),具体操作如下。

 1)新建角色控制器

 2)把两个状态拖入角色控制器中,这里选择了以下两种,可根据需求修改

3)新建一个bool型来控制状态转换,对两个箭头的设置如下(右侧)

  

 4)把角色控制器赋予monster,并给monster添加刚体和碰撞。

3、添加网格代理,网格代理的参数可适当改变。

 4、写代码,把代码赋予monster,当玩家与monster的距离小于8时,monster追踪玩家,当距离大于8时,monster停止追踪并回到原来的位置,代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class MosterController : MonoBehaviour
{
    private Animator _animator;
    public Transform player;
    private float distance;
    public NavMeshAgent agent;
    Vector3 sta;
    // Start is called before the first frame update
    void Start()
    {
        _animator = GetComponent<Animator>();
        sta = this.transform.position;
        _animator.SetBool("isattack", false);
    }

    // Update is called once per frame
    void Update()
    {
        Vector3 playerPosition = player.transform.position;
        Vector3 ZombieToPlayer = playerPosition - this.transform.position;
        distance = ZombieToPlayer.magnitude;
        if (distance < 8f)
        {
            _animator.SetBool("isattack", true);
            agent.destination = player.position;
            this.transform.LookAt(player);
           
        }
        else
        {
            _animator.SetBool("isattack", true);
            agent.destination = sta;
        }
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

unity有限状态机和模糊状态机(怪物AI、自动寻路) 的相关文章

  • 基于Spring Boot的酒店客房管理系统

    文章目录 项目介绍 主要功能截图 后台 前台 部分代码展示 设计总结 项目获取方式 作者主页 超级无敌暴龙战士塔塔开 简介 Java领域优质创作者 简历模板 学习资料 面试题库 关注我 都给你 文末获取源码联系 项目介绍 基于Spring

随机推荐

  • 奇偶校验c语言ascii,奇偶校验(parity check)

    parity check 奇偶校验 N a check made of computer data to ensure that the total number of bits of value 1 or 0 in each unit o
  • 查看Linux的用户权限(转载)

    转 Linux查看用户及其权限管理 查看用户 请打开终端 输入命令 who am i 或者 who mom likes 输出的第一列表示打开当前伪终端的用户的用户名 要查看当前登录用户的用户名 去掉空格直接使用 whoami 即可 第二列的
  • ASP.NET MVC - Model Binding

    Http Request 到Input Model的绑定按照model的类型可分为四种情况 Primitive type Collection of primitive type Complex type Collection of com
  • ROC曲线-阈值评价标准

    ROC曲线指受试者工作特征曲线 接收器操作特性曲线 receiver operating characteristic curve 是反映敏感性和特异性连续变量的综合指标 是用构图法揭示敏感性和特异性的相互关系 它通过将连续变量设定出多个不
  • UE4导入3dmax模型并在场景中添加第三人称角色

    1 3dmax安装Datasmith插件 插件下载位置 https www unrealengine com zh CN datasmith plugins 2 3dmax导出模型 3 UE4导入模型 从3dmax导出datasmith的格
  • Pytorch模型保存与加载模型继续训练

    1 网络模型定义与模型参数保存 定义网络模型与基本参数 以及模型训练和模型保存 使用torch save 方法保存模型 在save dict 中可以保存epoch model optimizer scheduler loss等参数 my n
  • 2013年6月24日星期一(离屏表面blitter)

    粗略看了一下 感觉这章也是个大餐 把所有以前的全屏过程综合起来了 1 总流程 SURFACE 不只是只有主缓冲和后备缓冲 还有离屏表面 离屏表面不只是一个 它装载各种位图 然后被blt到后备缓冲 再primarysurface gt fli
  • django 实现同步登登录和退出

    实现步骤 准备登录Django模板表单 设计用户模型 添加用户的同步登陆 添加登录拦截 实现退出登录的功能 用户登录 步骤一 认证用户 user authenticate username john possword secret 步骤二
  • CSS-IN-JS

    集成css代码在js中 一 为什么会有 CSS IN JS CSS IN JS 是 WEB 项 中将 CSS 代码捆绑在 JavaScript 代码中的解决 案 这种 案旨在解决 CSS 的局限性 例如缺乏动态功能 作 域和可移植性 二 C
  • MS17-010(Eternal blue永恒之蓝)漏洞利用+修复方法

    MS17 010 Eternal blue永恒之蓝 漏洞利用 修复方法 前言 0x01 准备工作 0x02 漏洞利用 0x03 修复方案 总结 前言 提到操作系统漏洞 大家肯定听说过耳熟能详的永恒之蓝 MS17 010 了 他的爆发源于Wa
  • (模电笔记四 By Multisim)典型运算放大电路案例分析(同相反相差分)

    1 反相比例运算电路 1 输入 U i U i Ui 与输出 U
  • 【研究记录】dummy related tips

    Q 生成dummy但是条件太多 string太长 A 参考 合成控制法时候expression too long错误解决问题 Stata专版 经管之家 原人大经济论坛 pinggu org local code1 C25 C26 C27 C
  • 鸿蒙-实践课程五 android、HarmonyOS Database

    在android中使用到数据包括 sqlite mysql等等 使用最多是 greenDao 是 Android中一个开源的对象关系映射框架 能够提供一个接口通过操作对象的方式去操作关系型数据库 完成 Java 对象的存储 更新 删除和查询
  • 向量数据库介绍

    1 什么是向量数据 向量数据库是一种专门用于存储和检索向量数据的数据库 它不同于传统的关系型数据库 而是基于向量相似度匹配的方式来实现高效的数据查询和分析 2 向量数据库的应用场景 2 1 应用场景概览 向量数据库是一种专门用于存储和检索向
  • ChatGPT 最全中文指南

    ChatGPT 中文指南 ChatGPT模型是由OpenAI训练的大型语言模型 能够生成类人文本 通过向它提供提示 它可以生成继续对话或扩展给定提示的响应 在此中 您将找到可与 ChatGPT 一起使用的各种提示 它能干什么 直接问它 我是
  • PTA 列车调度 (25 分)

    7 11 列车调度 25 分 火车站的列车调度铁轨的结构如下图所示 两端分别是一条入口 Entrance 轨道和一条出口 Exit 轨道 它们之间有N条平行的轨道 每趟列车从入口可以选择任意一条轨道进入 最后从出口离开 在图中有9趟列车 在
  • origin如何绘制双y轴曲线_「科研干货」如何利用Origin高效绘图丨附下载

    初识Origin Origin是一款数据分析和制图的软件 具备统计 峰值分析和曲线拟合等分析功能 可以绘制出二维和三维图形 支持Excel数据导入 甚至txt 直接把txt数据文件拖入到Origin里面 但是Origin对中文的兼容性不是特
  • 3D Tiles格式介绍(1)——概要

    3DTiles格式介绍总目录 https blog csdn net qq 31709249 article details 102643371 前一段时间写了glTF的格式解析 传送门 https blog csdn net qq 317
  • Ubuntu安装Android Studio和SVN配置

    Ubuntu安装Android Studio和SVN配置 Java jdk的配置 在 home hongzhen 目录下新增Java目录 下载Java的Linux包 放到 home hongzhen Java目录下 执行tar zxvf j
  • unity有限状态机和模糊状态机(怪物AI、自动寻路)

    自动寻路步骤 1 把场景中不同的物体勾选static 2 烘培寻路网格 3 添加NavMeshAgent组件 4 给需要寻路的物体添加脚本 游戏中有限状态机的体现 小怪的巡逻和追逐功能 模糊状态机的体现 当玩家离小怪比较近时 小怪会追逐玩家