键值包装器(Properties)

键值包装器 针对键值做了较常见的数值映射,通过键值包装器,可以更加灵活、快速的进行数值调教。

添加键值映射

  
  <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>

Properties包装器下Key结点属性

属性

释义

示例值

Name

键标识

默认值

PreOffset

预偏移值

0

PreScale

预所放值

0

DeadZone

死区值

0

Exponent

指数增长

1

Sensitivity

敏感度

1

Min

最小值

负无穷

Max

最大值

正无穷

Invert

值反转

False

InvertEvent

事件反转(仅针对External设备Axis_xx键有效)

False

最后更新于

这有帮助吗?