- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Unity高级项目实战课件03灵魂狩猎者剖析
接下来我们将讲解决定移动方向的流程,首先以追赶型幽灵为例断详细说明一(图) 幽灵首先算出从自己的位置指向骑士的位置的向量。这一计算过程非常简单,只需用骑士的坐标减去自己的坐标即可。如果可以直接朝骑士的方向前进当然很好,但是由于迷宫中只能朝上下左右四个方向前进,因此必须从上下左右四个方向中选择最接近目标的方向移动。这可以通过比较刚才算出的向量的X分量和Z分址计算得出. 让我们来看看实际的代码。 * 6.3跟踪的算法 (a)求出从自己的位置指向骑士的位置的向量。(b)选择X分量和Z分量中绝对值较大的一个。 x、z两个分量中,将绝对值较大的一个代人newDirectionlst,较小的一个代人newDirection2nd。这里之所以没有马上舍弃绝对值较小的那个值,而是将其作为优先度低的候补值存了起来,是因为根据迷宫的形状变化,无法保证一定能够朝期望的方向移动。(c)调用DirectionChoise方法,选择实际移动的方向。 * * 6.3跟踪的算法 这个方法会按照下列顺序检查个方向是否为墙壁,若允许移动就将其作为移动方向返回。(1)第1候补(2)第2候补(3)第2候补的反方向(4)第1候补的反方向 * 6.3跟踪的算法 检查第1、第2候补的反方向的目的在于应对下图3.16现的情况。 在图3.16中,幽灵沿着与骑士相反的方向前进,正好经过T型路口,接下来它应该往哪里前进呢? 第1候补是(1)指的右方向,因为和当前前进方向正好相反所以不能选择。第2候补是上方向,因为将碰到墙壁所以也被排除。剩下可选的方向只有第1、第2候补的反方向,需要从二者中选出一个。 如果可能的话我们希望在离骑士不太远的情况下选定方向,这就需要详细探测迷宫的形状。这里我们只判断某个方向是否可选。例子中把第2候补的反方向、第1候补的反方向分别作为第3候补和第4候补。虽然未必是正确的方法,但是从完成的结果来看这种程度已经够了. * 6.3跟踪的算法 6.4埋伏等待型、包围攻击型和随机型 现在我们来看看“追击型”以外的其他方式。首先是“埋伏等待型”(图)。 虽然“埋伏等待型”的幽灵会提前到骑士将要到达的地方等待,但基本的程序和“追赶型”并无太大差别,仅仅是移动的目标位置不同而已。“追赶型”的情况下,目标是骑士所在的位置,而“埋伏等待型”的情况下,目标则是骑士前方不远处的位置。 * “追赶型”和“埋伏等待型”在代码上的区别在于,前者是计算“指向骑士所在位置的向量”,后者是计算“指向骑士前方位置的向量”。 第3种类型的“包围攻击型”也是一样,除了目标位置有所不同,其他都基本类似(图) * 6.4埋伏等待型、包围攻击型和随机型 “包围攻击型”幽灵向着以骑士为中心和“追赶型”幽灵对称的位置移动。移动的方法和“追赶型”与“埋伏等待型”相同。 其实“追赶型”和“埋伏等待型”组合起来也能够对骑士形成包围攻击。不过“包围攻击型”和“埋伏等待型”不同的是,它和“追赶型”幽灵距离骑士的距离是相同的。“追赶型”幽灵和“包围攻击型”幽灵从前后同时袭击骑士,这才是名副其实的“包围攻击”。 最后的“随机型”和骑士的位置没有关系,它使用随机数来决定前进的方向。这里非常重要的一点是第1候补和第2候补必须按纵横方向成对出现。 * * 6.4埋伏等待型、包围攻击型和随机型 DirectionChoice方法中必须选择两个候补项。当两个候补方向都无法前进时,则将分别选择它们的反方向。第1候补和第2候补正好是相反方向时, 第3候补=第2候补的反方向=第1候补 第4候补=第1候补的反方向=第2候补就变得只有纵向或横向可选。为了让4个候补项分别为上下左右4个方向,就必须令第1候补和第2候补中一个是纵向一个是横向。 (a)随机选择第1个候补项后,取出“表内位于其后两位的元素”作为第2候补,保证了两个候补项一横一纵。 (b)如果仅做(a)的处理,将只能使用“右和上”“左和下”的组合,因此还需要对第2候补通过随机数取反方向。这样,“右和下”“左和上”就能和之前两项以相同的概率出现了。 * 6.5观察幽灵的行动 在了解了4种思考过程之后,现在我们来确认一下它是如何运作的。适当地替换地图数据中的幽灵编号,启动游戏。因为游戏中摄像机只能看到骑士的周边,所以这时使用场景视图的摄像机会更方便(图1)。 点击画面右上角的Layout按钮,将布局变成“2by3。关闭Maximize on Play。场景视图和游戏视图将并列显示。这样不论幽灵走到哪里都可以观察它的运动。 还可以用另外一个方法调试:把幽灵的编号设为5,“追赶型”和“埋伏等待型”将在相同的位置产生(图2 )。游戏开始后,原本重叠的幽灵马上就分开了。看到这样的测试结果
文档评论(0)