摘要: 接上一节 6、 寻路网格体代理 通过允许配置多个“代理”,虚幻引擎使得用户能够轻松为大小各异的AI创建寻路网格体。首先,选中世界大纲视图中的“RecastNavMesh”,找到细节面板中的“生成”分段,如下图所示。这里的几个选项都与代理相关,分别是“代理半径”(Agent radius)、“代理高度 阅读全文
posted @ 2021-10-08 16:30 achevery 阅读(775) 评论(0) 推荐(0)
摘要: 接上一节 4、 寻路原理 在场景中进行寻路是AI的基本功能,但这种寻路并非简单地从A点移动到B点。寻路有两个关键部分:计算路径和躲避障碍。在本模块中,我们将假设对象是静态的。如果要让AI在场景中移动,就需要用到寻路网格体。寻路网格体用于帮助AI在场景中进行寻路。网格体由大量凸多边形组成,规定了AI可 阅读全文
posted @ 2021-10-07 18:45 achevery 阅读(630) 评论(0) 推荐(0)
摘要: 1、 创建项目和场景 首先,新建第三视角的蓝图项目,然后根据自己需求设置障碍物。 (1) 将障碍物放置在地面的快捷操作:首先选中障碍物,将其移至地面上方,然后按“End”键,实现障碍物放置在地面。 (2) 复制障碍物的快捷操作:选中障碍物,在障碍物处于移动状态,按住“Alt”键,实现复制。 2、 A 阅读全文
posted @ 2021-10-06 17:13 achevery 阅读(950) 评论(0) 推荐(0)
摘要: 下面用生产者和消费者问题来展示协程如何解决软件架构中“谁拥有主循环”的问题。在一种设计中,程序通过调用消费者启动。当消费者需要新值时就唤醒生产者,生产者向消费者返回新值后挂起,直到消费者再次将其唤醒。因此,我们将这种设计称为消费者驱动( consumer-driven)式的设计。 同时,我们可以使用 阅读全文
posted @ 2021-10-05 19:55 achevery 阅读(142) 评论(0) 推荐(0)
摘要: Lua的协程很像系统中的线程,也是一个独立的执行线。不同之处是,线程是并行执行的,而协程是协作式的,即同一时刻只有一个协程在执行,并且只有它自己显式请求挂起时,执行权才会转换。协程是一系列的可执行语句,拥有自己的栈、局部变量和指令指针,同时协程又与其他协程共享了全局变量和其他几乎一切资源。Lua语言 阅读全文
posted @ 2021-10-05 18:29 achevery 阅读(456) 评论(0) 推荐(0)
摘要: Lua具有自动内存回收机制,但是垃圾收集器只能回收那些它认为是垃圾的东西,不会回收那些用户认为是垃圾的东西。比如将一个对象放在一个数组中但没有用时,它就无法被回收,这是因为即使当前没有其他地方在使用它,但数组仍引用着它,除非用户告诉Lua这项引用不应该阻碍此对象的回收,否则Lua是无从得知的。 Lu 阅读全文
posted @ 2021-10-04 19:26 achevery 阅读(872) 评论(0) 推荐(0)
摘要: Lua中没有类,即没有在对象生成中有模子的概念,但是有原型的概念。基于原型的语言(prototype-based language)中,每个对象可以有一个原型(prototype)。原型也是一种普通的对象,当对象(类的实例)遇到一个未知操作时会首先在原型中查找。类和原型都是一种组织多个对象间共享行为 阅读全文
posted @ 2021-10-04 16:20 achevery 阅读(337) 评论(0) 推荐(0)
摘要: 面向对象有三个核心特征:类,继承,私有性。基于这三方面,介绍Lua的面向对象的编程和实现原理(没介绍的会在之后的随笔介绍)。从很多意义上讲,Lua语言中的一张表就是一个对象。使用参数self是所有面向对象语言的核心点。 先看下一段代码,这是一个简单表达账户储存和提取的代码: Account = {b 阅读全文
posted @ 2021-10-04 15:24 achevery 阅读(125) 评论(0) 推荐(0)
摘要: 元表和元方法:对于表,我们可以使用元表和对应的元方法来定义表之间的操作,如算术操作、关系操作等等。Lua在创建表时,默认不带元表,可以使用函数setmetatable 来设置或修改任意表的元表,使用函数getmetatable来查看表: t1 = {} setmetatable(t, t1) pri 阅读全文
posted @ 2021-10-01 20:17 achevery 阅读(133) 评论(0) 推荐(0)
摘要: 四:数据结构 Lua语言中的表不是一种数据结构,是其他数据结构的基础。通过使用表,来实现数组、列表、集合、包和图等数据结构。 (1)数组:简单地使用整数来索引表即可实现数组。如: local a=0 for i=1,200 do a[i]=0 end (2)矩阵及多维数组:使用如下代码来创建一个全0 阅读全文
posted @ 2021-09-30 22:36 achevery 阅读(253) 评论(0) 推荐(0)