查看: 95|回复: 1

[交流讨论] 视野插件MKR_PlayerSensor的更新修复

[复制链接]
梦石
0
星屑
1465
在线时间
223 小时
注册时间
2021-3-21
回帖
11
发表于 2026-9-21 22:59:28 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 一梦如是 于 2026-9-21 23:08 编辑

之前站里有人分享了MKR_PlayerSensor 的2.5.1版本,发现这个插件确实有扇形判定时,横向持续移动的过程中,无法触发被发现的BUG。
所以就去插件的原址找了几年前的最新的3.1.1 版本,发现这个问题依然没有修复。于是在这个3.1.1的基础上把这个问题修复了。
本次是基于AI进行的修复,AI很容易在没有弄清状况的时候给出方案,不过好在这次我直接看出来了,一直没有按照AI的方案改,而是持续让给出测试详情让AI排查,大概第七、八版的时候给的答案和解释让我觉得有戏,果然一次测试成功。
插件的介绍参考 B站某介绍视频:BV17i4y137jt
在视频中的最后一个插件就是本插件。

具体原因:
X轴判定是“单点等式”而非“区间不等式”
看 DIR_DOWN 的玩家判定条件(其他三个方向也有完全相同的结构问题):

if (px >= rex + coordinates[0] - realX      // ★ X轴左边界
    && px <= rex + coordinates[0] + realX    // ★ X轴右边界
    && py >= rey + Math.abs(coordinates[0]) - realY
    && py <= rey + coordinates[1] + realY) {

当 realX = 0(默认值)时,X轴条件变成了:
px >= rex + coordinates[0]  &&  px <= rex + coordinates[0]
这在数学上等价于 px == rex + coordinates[0]!
为什么横向穿越 100% 失败?
coordinates[0] 是整数(图块偏移量,如 0, 1, 2, 3)
NPC 站着不动,rex 也是整数
所以 rex + coordinates[0] 永远是整数(如 15.0, 16.0, 17.0)
玩家横向移动时,px 从 15.0 平滑过渡到 17.0,中间经过 15.1, 15.2 ... 15.9
px 只有在恰好等于整数的那一瞬间(1~2帧)才满足条件
如果那 1~2 帧恰好没被采样到,或者浮点精度差了一丝,就永远无法触发
为什么纵向穿越没问题?
纵向穿越时 px 固定为某个整数(如 16.0),恰好等于某个 coordinates[0],X 条件始终满足。然后 Y 轴是一个宽大的区间(Math.abs(coordX) 到 coordY),玩家在这个区间内连续很多帧都能命中。
为什么停止/转向能触发?
停止时 px 对齐到整数格子,恰好满足 X 等式。转向时也会对齐格子。



整体上,解释的思路上我认为是对的,按照修改方案,将
    // 扇範囲の探索
    Game_Event.prototype.sensorFan = function ()
大概2446行附近,将这个扇形范围探索函数里面四个方向的范围判定做了修改,将原始函数进注释掉了换成了新判定方法,其余没变。


插件原始地址:https://github.com/mankindGames/
下面是修改版:
https://rpg.blue/forum.php?mod=attachment&aid=NDE2MTUwfGQwNDhiMjM5fDE3OTA3OTMzMDV8MHw%3D

MKR_PlayerSensor.rar

21.14 KB, 下载次数: 1

梦石
0
星屑
426
在线时间
100 小时
注册时间
2025-9-4
回帖
2
发表于 昨天 01:11 | 显示全部楼层
感谢修复
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部