键值包装器 针对键值做了较常见的数值映射,通过键值包装器,可以更加灵活、快速的进行数值调教。
<Device Name="Joystick" Type="Joystick" Index="0">
<!--
数值包装器
仅针对 AxisKey 有效
-->
<Properties>
<!--
针对Axis值, 按照以下顺序依次处理数据
PreOffset: 预偏移值 cur+=PreOffset
PreScale: 预缩放值 cur*=PreScale
DeadZone: 死区 假设值为:0.5 范围[0.5,1.5] 将会映射为 [0,1.5]
Exponent: 指数增长 std::sin(cur)*std::powf(std::abs(cur), Exponent);
Sensitivity: 敏感度(缩放值) cur*=Sensitivity
Min,Max: 限定区间 [Min,Max] cur = clamp(cur,Min,Max)
Invert: 反转 cur*=(Invert?-1:1)
InvertEvent: 在设备 Type=External 时,针对 Button_xx 键有效,反转IE_Pressed&IE_Released事件
-->
<Key Name="Axis_00"
PreOffset="0.0"
PreScale="1.0"
DeadZone="0.0"
Exponent="1.0"
Sensitivity="1.0"
Min="0"
Max="5"
Invert="False"
InvertEvent="False"
/>
</Properties>
<!---------------------- 适用场景 ----------------------->
<!-- 1. 对于模拟量数值,将其值包装为[0,xxx]可以被当做普通按键用来响应基本按键事件 -->
<Action Name="StartGame">
<Key Name="Axis_00"/>
</Action>
<!-- 2. 对于轴输入, 可以用来调教游戏体验性, 而无需更改游戏代码 -->
<Axis Name="MoveSpeed">
<Key Name="Axis_00"/>
</Axis>
<!-- 3. 对于输出动作,可以用来做输出值调教 -->
<OAction Name="Jump">
<Key Name="OAxis_00"/>
</OAction>
</Device>
</Device>
</IORoot>