[瞄准辅助] 实现一种柔和平滑的瞄准辅助

目标

实现一种轻量级的平滑瞄准辅助,不会有强烈的吸附感。

参考:https://www.youtube.com/watch?v=yGci-Lb87zs&list=PLG9sbQS_QV1-6MnaNaN-uO5fUkaTocN58&index=23

思路

x轴是输入,y轴是结果(瞄准线的朝向)

当没有辅助时,x和y是45度映射关系,如下图

Snipaste_2025-08-12_21-49-36

 当立马强制辅助吸附到Target中心时,x和y的关系如下图:

Snipaste_2025-08-12_22-03-00

 

加一些线性的过渡,如下图:

Snipaste_2025-08-12_21-53-06

 

添加2种类型过渡: 1.核心的压缩过渡     2.从压缩过渡返回到正常映射的过渡(或者反过来) 如下图

image

 

1. 使用 Monotone cubic 进行曲线的构造  https://en.wikipedia.org/wiki/Monotone_cubic_interpolation

2.构建两种类型的点去构建曲线

   private enum PointType
        {
            //--核心压缩过渡--
            Start = 0,
            Center = 1,
            End = 2,
            //--返回线性过渡--
            BlackStart = 3,
            BlackEnd = 4
        }

 

 

 

需要处理的细节比较多

比如:

1.多个xRang交叉的问题  (冗余点的剔除 )

2.有些过于靠近的xEnd和 nextXBegin是否可以直接合并 (冗余点的合并)

3.首尾交叉(360->0)的问题  (通过延伸首尾数据去解决,会增加一些点数据,但比较直接去解决问题)

 

实现

这里有具体的实现  https://github.com/fechen2/AimAssistTest?tab=readme-ov-file  

效果还可以

Snipaste_2025-08-12_22-56-36

 

posted @ 2025-08-12 23:09  sun_dust_shadow  阅读(13)  评论(0)    收藏  举报