您的位置 首页 怪物弹珠

【心得】弹珠敌人模块反射机制研究(图多)

首先,所谓 “轮廓” 指的是敌人模块的外形,
或说详细点,是指敌人会造成碰撞判定的范围。
轮廓的形状是一个相当完整的圆形(不考虑弱点)。
那为甚么会有乱反射呢?
这么说好了,我们先来看“碰撞”的过程会发生什么事:
首先,反射弹珠接触到敌人轮廓时会发生碰撞判定,
然后内部机制(以下称之为 反射机制)根据入射位置及入射角计算出反射角。
以上两件事中,轮廓归轮廓,反射机制归反射机制。
一定程度上来说,反射并不由轮廓引起,而是反射机制。
而且,弹珠也没有把反射机制用圆形设计。

说到这,“反射机制”是如何运作就是本篇要讨论的主题。
而以下提到的理论是个人经测试及假设所得,
基本上很难以确认是否与弹珠实际的机制吻合。

1. 反射方式

反射基本上能分为三种:
水平反射、垂直反射以及切线反射。

水平/垂直反射为将碰撞点视为水平/垂直面计算反射角。
切线反射则是依圆形的轮廓于该点的切线视为平面计算反射角。


切线反射为现实中正常的球体碰撞反射角度计算方式。
然而但在弹珠中,许多的反射(非预期反射)是由切线反射造成的。


2. 反射方式判断条件

上面讲了三种反射方式,其会计算出三种不同的角度。
接下来就要探讨反射机制是如何决定要用哪个角度来作为反射角。
我的研究方式为:利用导引线在角度连续的改变下,
观察反射角是否发生不连续的变化(转换反射方式),发生时就记录下来,
并待数据足够时加以推理。以下是推理出的条件:

(一) 水平/垂直反射角中,射入模块的角度不列入考量

如果有些几何概念的人,应该能知道水平及垂直面反射所算出来的方射角会相差180°(即:在同一条直在线,但指向相反的方向)。
而若此角度不与轮廓该点的切线角度平行,则必定会有一端指向模块内部。
而该角度理所当然不能被采用。

(示例1:下图中水平反射角(蓝色箭头)指向模块内部)
(示例2:下图中水平/垂直反射角与该点切线接近平行,在角度细微变化下可以观察到两种反射方式的切换,图片经重叠处理)

但此判定有例外,即:角度指向模块内部,但仍被机制选定。
我认为这是机制的漏洞,以下称此现象为“缺陷角”。
出现缺陷角的状况为:导引线指向敌人后就截止。此表示其反射后发生的下一次碰撞位置也几乎在该点。
(示例1:缺陷角图片)
(示例2:缺陷角实例影片,可观察出第一下打在风扇上被判定出2 hits)
(示例3:缺陷角实例影片,可观察出第一下打在锁链怪上被判定出2 hits)
(二) 特定范围内的入射角度,优先采用水平/垂直反射角。

在此所提的特定角度范围,部分人称之为“轮廓缺陷角”,
而一般的说法是:“在此角度下弹珠不易发生乱反弹”。

(示例:下2张图中可发现在细微角度变化下,当角度进入垂直/水平优先范围时,反射机制进行转换)
(三) 排除前二个条件之水平/垂直反射角,若与切线反射角之夹角大于90°,则采用切线反射角。
最复杂的一点(但是是我最早假设的),此假设的主要原因为:
当反射角发生不连续变化(转换反射方式)时,
常常会发现这两个角度间的夹角相当接近于90°,
故猜测90°为水平/垂直反射角与切线反射角转换的条件。
而此条件优先度低于第(二)点。

(示例1:下图中垂直反射角(红色)指向模块内部,先排除。其入射角(绿色)不在特定优先范围内,但水平反射角(蓝色)切线反射角(黄色)之夹角小于90°,故采水平反射角(蓝色)。)

(示例2:下图中垂直反射角(红色)指向模块内部,先排除。其入射角(绿色)不在特定优先范围内,并水平反射角(蓝色)切线反射角(黄色)之夹角大于90°,故采切线反射角(黄色))


(示例3:在细微角度变化下发生反射方式转换,而其夹角非常接近于90°)
3. 实例

以下提供一实例,对一段连续变化的角度及其反射角进行分析。

区段一:其入射角于垂直反射优先范围,故采垂直反射角。

区段二:入射角超出垂直反射优先范围,水平反射角指向模块内部,垂直反射角与切线反射角之夹角大于90°,故采切线反射角。

区段三:入射角不处优先范围,水平反射角指向模块内部,垂直反射角与切线反射角之夹角小于90°,故采垂直反射角。

区段四:发生缺陷角。

区段五:入射角不处优先范围,垂直反射角指向模块内部,水平反射角与切线反射角之夹角大于90°,故采切线反射角。

区段六:其入射角于水平反射优先范围,故采水平反射角。

实例影片:
4.补充
最前面所讲的 “轮廓的形状是一个相当完整的圆形” 可能会有人怀疑,
所以我在那有补充 “不考虑弱点”,而我选剪刀来测试也是因为这关大多敌人没弱点,
因为弱点有他自己的模块,也是相当完整的小圆形,
且弱点模块不论其当时是否显现,都会存在在它的位置。
而这么个小圆形崁在大圆形上,就会使其表面变得凹凸不平滑,
它们增加了一些可以卡点的区段,但也增加了许多容易造成乱反弹(切线反射)的区域。
5.结论
这些都是我的假设,然后在经过许多测试觉得大致符合后才发布的。
而我也知道则篇文章绝对不是反射机制的全貌,但我暂时也不想去试了。
(像是就算射出角度于优先角度(轮廓缺陷角)内还是会发生乱反弹,这点本文无法解释,
而我用导引线也还没找到过这样的情况)
如果有人发现不符合实际的地方,或想出更完整的机制,还请不吝指教。
说这么多,这有助于游戏技巧吗? 我觉得:没有
本文来自网络,不代表3楼猫立场,转载请注明出处:https://www.3loumao.org/16280.html
返回顶部