RT, LT はアナログ入力となっているので、デジタルボタンには RT, LT が割り振られていない場合があります
GetJoypadInputState 以外に、Direct Input から取得できる情報をそのまま取得するための関数
GetJoypadDirectInputState という関数があるのですが、その関数から取得できる値を全て画面に表示する
こちらのサンプルで RT, LT がどの値に割り振られているのか確認できると思います
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
DINPUT_JOYSTATE input ;
int i ;
// ウインドウモードで起動
ChangeWindowMode( TRUE );
// DXライブラリの初期化
if( DxLib_Init() < 0 ) return -1;
// 描画先を裏画面にする
SetDrawScreen( DX_SCREEN_BACK );
// メインループ
while( ProcessMessage() == 0 )
{
// 画面のクリア
ClearDrawScreen() ;
// 入力状態を取得
GetJoypadDirectInputState( DX_INPUT_PAD1, &input ) ;
// 画面に情報を描画
DrawFormatString( 0, 16 * 2, GetColor( 255,255,255 ), "X :%-5d Y :%-5d Z :%-5d", input.X, input.Y, input.Z ) ;
DrawFormatString( 0, 16 * 3, GetColor( 255,255,255 ), "Rx:%-5d Ry:%-5d Rz:%-5d", input.Rx, input.Ry, input.Rz ) ;
DrawFormatString( 0, 16 * 4, GetColor( 255,255,255 ), "Slider 0:%-3d 1:%-3d", input.Slider[ 0 ], input.Slider[ 1 ] ) ;
DrawFormatString( 0, 16 * 5, GetColor( 255,255,255 ), "POV 0:%-5d 1:%-5d 2:%-5d 3:%-5d", input.POV[ 0 ], input.POV[ 1 ], input.POV[ 2 ], input.POV[ 3 ] ) ;
DrawString( 0, 16 * 6, "Button", GetColor( 255,255,255 ) ) ;
for( i = 0 ; i < 32 ; i ++ )
{
DrawFormatString( 64 + i % 8 * 64, 16 * 7 + i / 8 * 16, GetColor( 255,255,255 ), "%2d:%d", i, input.Buttons[ i ] ) ;
}
// 裏画面の内容を表画面に反映
ScreenFlip();
}
// DXライブラリの後始末
DxLib_End();
// ソフトの終了
return 0;
}
↑
こちらのプログラムを実行した状態で RT, LT を押してみてください
RT, LT を押すことで値が変化する箇所を確認できると思います m(_ _)m
> それとも、XBox用の関数を使用した方がよいのですか?
XInput 対応のゲームパッドでしたら、XBox用の関数( GetJoypadXInputState )を使用した方が良いと思います
( Direct Input 対応のゲームパッドの場合、メーカーによって値が割り振られる箇所が異るなど扱いが難しいので… )