游戏人工智能
文章平均质量分 79
白夜wn
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Navmesh研究(三)区域生成
本文翻译自:http://critterai.org/projects/nmgen_study/regiongen.html区域生成区域生成是构建导航网格的第二阶段,其代表了源几何体的可行走表面的表面区域的生成。创建开放的高度域开放的高度域表示的是高度域中实心区间上方的区域,其创建方式相对简单。循环遍历所有的实心区间:如果该实心区域被标记为可行走,则记录其y轴方向最大值,同时寻找该列中上方的相邻区间的y轴方向最小值。这两个值分别是新生成的开放区间的floor和ceiling;如果该实心区域是该列翻译 2021-02-06 01:57:55 · 808 阅读 · 0 评论 -
Navmesh研究(准备工作)配置参数
本文翻译自:http://critterai.org/projects/nmgen_study/config.html配置参数在进入网格生成每个阶段的细节之前,了解影响最终结果的各种配置参数很重要。本页提供NMGen类使用的部分主要配置参数的功能描述(详细参数可去原文查看),它们如何影响最终结果以及它们如何相互影响。cellSize约束条件 > 0使用者NavmeshGenerator,SolidHeightFieldBuilder,SolidHeightField,OpenHeightF翻译 2021-02-06 00:33:16 · 722 阅读 · 0 评论 -
Navmesh研究(二)体素化过程
体素化过程构建导航网格的第一步是使用体素化创建一个实体高度域创建实体高度域当检测到源网格的轴对齐包围盒并创建一个用于保存体素信息的实体高度域之后,我们对源网格中的每一个多边形(可以是三角形)执行以下过程:确定多边形在高度域xz平面上的投影。用多边形的2d轴对齐高度域的边界,这样做减少了多边形与高度域作相交测试的次数循环遍历投影覆盖的所有高度域列,并得出与该列相交的源多边形部分。如果发生相交,则导出一个新的“剪切”多边形。然后确定修剪的多边形的最小和最大高度。这代表这一列与源多边形相交部分在y轴上翻译 2021-02-05 03:52:40 · 952 阅读 · 0 评论 -
Navmesh研究(一)高度域介绍
高度域介绍NMGen会生成用于navigation mesh(导航网格)的数据,为了了解这个过程,首先需要了解它如何使用高度域来表示体素数据。高度域提供了良好的压缩效果,同时高度域也提供了可以提取几何图形上表面信息的数据结构。高度域的基本结构下面是在欧几里得空间中任意轴都对齐的盒子。它的边界由最小和最大顶点定义。现在,将盒子切割成宽度和深度相同的垂直列。每一列就是一个格子。然后,在高度轴方向用固定的高度增量对每一列进行切割,每一列都会分成若干个小的轴对齐包围盒(红色的盒子),每一个(红色)盒子翻译 2021-02-05 01:54:55 · 925 阅读 · 0 评论 -
简单的巡逻AI
1、场景设置场景中央为可供移动的主角(黑色箭头)和四处巡逻的AI(蓝色圆形),四周为黑色墙体。墙体碰撞器为EdgeCollider2DAI拥有一个子物体,子物体上挂一个Circle Collider2D,用于表示AI的听力范围2、脚本编写1、AI的脚本首先,我们可以针对AI所拥有的状态,创建对应的枚举类型public enum AvoidSceneState{ Idle, Track, AvoidWall}在这个简单巡逻场景中,AI需要三个状态:巡逻、追击、避原创 2020-11-02 20:51:20 · 713 阅读 · 0 评论 -
《游戏人工智能编程》学习笔记三——West World场景实例
1、West World实例场景:在一个西部小镇有一个居民Bob,他的职业是矿工,小镇上有四个标志物,金矿、酒吧、银行、家,他疲劳时要回家睡觉,口渴时会去酒吧喝酒,金子到达一定数目会去银行存储金子。他准确地向哪走,到达后要干什么,都由Bob当前的状态决定。金矿工人的状态图:居民基类:using System.Collections;using System.Collections.Generic;using UnityEngine;public class BaseGameEntity{原创 2020-10-18 15:03:34 · 486 阅读 · 1 评论 -
《游戏人工智能编程》学习笔记二——简单的有限状态机
1、有限状态机的定义定义:一个有限状态机是一个设备,或是一个设备模型,具有有限数量的状态,它可以在任何给定的时间根据输入进行操作,使得从一个状态变换到另一个状态,或者是促使一个输出或者一种行为的发生。一个有限状态机在任何瞬间只能处在一种状态。举个例子:灯的开关是一个非常简单的有限状态机。他有两种状态:开或关。状态之间的变换是通过你手指的输入产生的。向上按开关,产生从关到开的状态变换,向下按开关,产生从开到关的状态变换。2、有限状态机的实现方法1、switch/if以灯的开关为例using S原创 2020-10-16 14:28:10 · 725 阅读 · 1 评论 -
《游戏人工智能编程》学习笔记一
1.数学知识1.1笛卡尔坐标系在二维空间下,笛卡尔坐标系可以被定义成两个坐标轴成直角相交并且用单位长度标出。水平轴称为x轴,垂直轴称为y轴,两个轴。如果要表达三维空间,需要增加一个坐标轴-z轴,z轴从屏幕的后面延伸到你的头的后方,在途中穿过原点。1.2函数和方程如果x的每一个值都可以与y的一个值相关联,那么y就是一个关于x的函数。y称为因变量,x称为自变量。例如:y = m * x + c其中m和c叫做系数(不因自变量的变化而变化)1.3三角学1、射线和线段射线:只有一个端点,另一端无限原创 2020-10-14 22:05:17 · 2245 阅读 · 12 评论
分享