GetExtraAxisIndexes

获取设备上给定输入类型的额外轴的控制器轴索引。

语法

HRESULT GetExtraAxisIndexes(
    GameInputKind inputKind,
    uint32_t extraAxisCount,
    uint8_t* extraAxisIndexes
);

参数

inputKind _In_
类型:GameInputKind

正在请求其额外轴索引的输入类型。

extraAxisCount _In_
类型:uint32_t

额外轴的预期轴索引计数。 可以通过调用 GetExtraAxisCount 来检索此数字。

extraAxisIndexes _Out_writes_ (extraAxisCount) _
类型:uint8_t*

指向轴索引数组的指针。

返回值

类型:HRESULT

函数结果。

备注

方法 GetExtraAxisIndexes 检索设备上存在的给定输入类型的额外轴的控制器轴索引。 额外的轴是物理设备上存在的控制器轴,但不是指定输入类型的标准映射的一部分。

在调用此方法之前,应首先调用 GetExtraAxisCount 以确定有多少额外轴可用,并将该计数作为 extraAxisCount 参数传递。

下面的代码示例演示如何使用游戏板的额外轴:

bool GetGamepadExtraAxisValues(
    std::vector<float>* extraAxes,
    IGameInputReading* reading) noexcept
{
    Mwrl::ComPtr<IGameInputDevice> device;
    reading->GetDevice(&device);

    uint32_t extraAxisCount = 0;
    if (FAILED(device->GetExtraAxisCount(GameInputKindGamepad, &extraAxisCount)))
    {
        return false;
    }

    std::vector<uint8_t> axisIndexes(extraAxisCount);
    extraAxes->resize(extraAxisCount);
    if (FAILED(device->GetExtraAxisIndexes(
        GameInputKindGamepad,
        extraAxisCount,
        axisIndexes.data())))
    {
        return false;
    }

    std::vector<float> axisStates(reading->GetControllerAxisCount());
    reading->GetControllerAxisState(static_cast<uint32_t>(axisStates.size()), axisStates.data());

    for (size_t i = 0; i < axisIndexes.size(); ++i)
    {
        if (axisIndexes[i] < axisStates.size())
        {
            (*extraAxes)[i] = axisStates[axisIndexes[i]];
        }
    }

    return true;
}

要求

头文件:GameInput.h

库:gameinput.lib

支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机

另请参阅

GameInputKind
GetExtraAxisCount
GetExtraButtonIndexes
IGameInputDevice