リアルパッドの話ですが、左アナログパッドは各社でほぼ統一されているようですが、右アナログパッドはバラバラな模様。
うちのGameSirのパッドだと、スマホのUSBホストに刺すと、上下の動きが左右になっていて、左右の動きは上下に反映されません。
(PCで刺すとAxis4,5なのでXbox360と同じ模様
これはInput設定で、どのAxisの値を見て動かしているか次第です。
PCにつけた場合と、スマホにつけた場合でaxisが変わってるのでややこしい。
この記事が参考になりますが、右パッドの仕様違いはソフトからはわからないので、設定画面でユーザーに変更してもらうしかないのでしょう。
Unityでゲーム開発 -左右スティックを使う方法-
・ELECOM JC-PS101USV+PS2アナログコントローラ(DUALSHOCK 2)純正品 左右:3rd 上下:4th ・ホリパッド3 PRO. ブラック HP3-105 左右:3rd 上下:4th ・ELECOM JC-U2912FBKゲームパッド 左右:3rd 上下:5th ・Logicool Rumble Gamepad F510 左右:4th 上下:5th ※参考までに Xbox360コントローラは,左右:4th,上下:5thらしいです
ちなみに、左右axis3 上下axis4にしたら、GameSirのジョイパッドで行けました。
設定画面にAXIS変更ボタンを作って、Axis3,4→Axis3,5→Axis4,5と切り替えられるようにしました。
if (b == 25) //axis { if(axis==0) { axis = 1; GameObject.Find("/Canvas/SetupMenu/Button25/Text").GetComponent<Text>().text = "RightPad\nAxis 3,4"; } else if (axis == 1) { axis = 2; GameObject.Find("/Canvas/SetupMenu/Button25/Text").GetComponent<Text>().text = "RightPad\nAxis 3,5"; } else { axis = 0; GameObject.Find("/Canvas/SetupMenu/Button25/Text").GetComponent<Text>().text = "RightPad\nAxis 4,5"; } }
右アナログパッドを見ているカメラのスクリプトで、
if(Main.axis==0) // axis 4,5 { ax2 = main.joystickRx();//axis4 ay2 = main.joystickRy();//axis5 } else if (Main.axis == 1) // axis 3,4 { ax2 = main.joystickAxis3();//axis3 ay2 = main.joystickRx();//axis4 } else // axis 3,5 { ax2 = main.joystickAxis3();//axis3 ay2 = main.joystickRy();//axis5 }
という感じで切り替えました。
ゲームセーブするときはaxis設定も保存しておきます。
業界標準って感じなので、XBOX360有線パッドをAmazonで注文しました。明日届きます。コンビニ受け取りです( ゚Д゚)今、ヤマト運輸たいへんみたいだし
XBOX360無線パッドは持ってるんですが、電池がいつのまにか切れてたり、自動電源OFFが働いて使いずらい。
XBOX ONEのジョイパッドが一時期安くなってたと思うんですが、また高くなってますね。