Unity input systemで入力をシミュレートする

参考

マウスの入力をシミュレートする。

yield return とかでフレームが経過しないと呼ばれないと思います。

MouseState state = new MouseState();
state.WithButton(MouseButton.Left);
InputSystem.QueueStateEvent(device,state);
InputSystem.QueueDeltaStateEvent(device.delta,new Vector2(10,10));

inputsystemAsset-Binding-pathにあたる文字列を入れれば入力を直接セットできるようです。

var device = InputSystem.devices[1];
InputEventPtr eventPtr;
using (StateEvent.From(device, out eventPtr))
{
    ((ButtonControl) device["firstButton"]).WriteValueIntoEvent(1, eventPtr);
    ((ButtonControl) device["dpad/up"]).WriteValueIntoEvent(1, eventPtr);
    InputSystem.QueueEvent(eventPtr);
}

Deviceに直接入力を送れます

InputActionAssetでいうところのActionMapに直接入力を送る方法は見つかりませんでした。

下の場合でいう、Player.LeftDragを直接シミュレートするような方法はわからずです。

というか無理なのかも。

上のようなModifierを使った条件付きの入力も最初のコードのようにマウスに入力を送れば反応しました。

コメント

タイトルとURLをコピーしました