概要
以下の記事で Joystick の値を On-Screen Stick を使って Gamepad に流したが、Joystick の操作を逆にしたかったので、流す値を加工した。
横方向
Before | After |
---|---|
![]() |
![]() |
縦方向
Before | After |
---|---|
![]() |
![]() |
方法
以下のようなスクリプトを用意する。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem.Layouts;
using UnityEngine.InputSystem.OnScreen;
[RequireComponent(typeof(FloatingJoystick))]
public class OnScreenReverseStick : OnScreenControl
{
private FloatingJoystick _joystick;
void Start()
{
_joystick = GetComponent<FloatingJoystick>();
}
void Update()
{
// ここで入力値を逆にする
var value = new Vector2(- _joystick.Horizontal, - _joystick.Vertical);
SendValueToControl(value);
}
[InputControl(layout = "Stick"), SerializeField]
private string _controlPath;
protected override string controlPathInternal
{
get => _controlPath;
set => _controlPath = value;
}
}
Joystick から On-Screen Stick
コンポーネントを外し、作成したスクリプトをアタッチする。
すると、概要の画像のように Joystick による回転が逆になる。