Dungeon Mizarka 008

战斗实际制作Part02

承接昨天的攻击功能制作。拿取到定位点後要转换成Raycast再进行侦测。为了方便可以直接在场景里可看整个Raycast的距离、大小、碰接状态。直接利用现有的外挂(其实直接用Raycast也行,但有现成可以连Gizmos都准备好了的外挂,比较方便)

给予侦测的设定如下

场景里画出的侦测如下

红色表示有碰到物件,而浅蓝色则表示没有碰到任何物件。多数的物理攻击只会有一段攻击,但这里是直接测试复数攻击,为了之後的魔法或是弓箭攻击做准备。

利用Raycast的方式会有几个不同於直接用Grid距离进行攻击的设计。如同昨天提及的,传统的Grid攻击判定下,近距离武器通常是只能攻击前方一格,而远距离武器则是可以攻击前方数格。而同样是在一格里,若是有复数敌人,则在前面位置的敌人没有全数移除前,也是打不到後排的位置。

但此处用了Raycast,若是将其距离设定在一格的最後方,甚致是第二、三格的最後方,则有可能点到的位置是该格的後排又或是第二格、第三格的怪物(假设第二、三格有怪物的情况)。也就是说光是侦测距离这部份都极有可能会让原先以Grid为主的战斗规则整个变调。

虽然说以格状为移动的FPDC也不一定要完全遵循以格状为主的战斗规则,但还是希望能有一定部份的规则是相同的。

因此,从这个测试里得到想法是。如果玩家手中的武器是近距离型式的,则会将Raycast距离直接缩减到只能触及到该格的一半,如此就算是有可能可以点到後排的敌人,也会因为侦测不到而当作Miss。反之,如果手中的武器是远距离型式的,就可直接将距离延伸到第二或第三格。

以远距离武器来说,徜若真的在和敌人交战(第一格)的情况下,真的打到了第二格或是第三格的怪物,那就还要再思考怎麽处理。

敌人损伤机制

被打到的怪物(虽然目前源头和过程都还没有很完整)仍可以加入一些UI上的操作,让击中有点表现的层次。

加入了敌人群的怪物动态生成,现阶段没有利用Pool,还要看整体的数量来决定是否需要用到Pool。但之後加入特效时Pool的利用是跑不掉的,因此,准备Pool机制是势在必行的。

另外,在敌人的头像上加入了World Space UI以显示血格。

攻击时会有扣血和血量降至零後被清除的功能也先暂时加进来了,但敌人群并没有转换到作战状态,也不是动态产生。敌人群生成这部份会依赖地形生成时一并解决,而战斗状态的转换还要思考,留待AI进场时再看怎麽处理这块。

战斗本身的起点和终点都是装备、道具,这个是还没有进行的部份,除了地形生成外,接下来要朝着实作道具这个方向进行。所以接下来要准备

  • 地城生成
  • 道具系统

<<:  【Day07】数据输入元件 - Slider

>>:  Day 5 追加测试

Leetcode: 26. Remove Duplicates from Sorted Array

看大家都写leetcode o3o       Input 传入一个已排序好的阵列位置,把它变成se...

部署 Google App Script 专案(2) & Line Bot 简单回应讯息

昨天我们让 Reply Message 成功从 Read Mail 读取到验证码,今天要进一步让 R...

LeetCode 双刀流:700. Search in a Binary Search Tree

700. Search in a Binary Search Tree 昨天提到链结串列(Link...

软件测试类型

-测试类型 .静态测试是一种测试,其中被测软件 (software under test:SUT)...

Day 20 | 3D蛇走迷宫AR游戏开发Part1 场景放置、平面侦测

目录 游戏机制 FBX档汇入设定 建模放置、布置场景 侦测平面手动放置场景物件 游戏机制 侦测到平...