ジョイスティックからのからの入力を提供します。
エンジンのJoystickプロパティから現在のフレームのジョイスティックの状態を持った当クラスのインスタンスを取得できます。
ジョイスティックが持つボタンならびにアナログスティックの総数、ボタンの押し状態ならびにアナログスティックの倒し具合を調べることが出来ます。
押し状態は前のフレームと現在のフレームでそのボタンを押したかによって決まり、以下の4通りとなります。(○・・・押している、✕・・・押していない)
状態 | 前のフレーム | 現在のフレーム |
---|---|---|
Free | ✕ | ✕ |
Release | ○ | ✕ |
Push | ✕ | ○ |
Hold | ○ | ○ |
アナログスティックの倒し具合は、横方向(X)と縦方向(Y)それぞれに関して図に示すように実数値で表現されます。
名称 | 説明 |
---|---|
GetJoystickName | ジョイスティックの名称 |
GetButtonsCount | ジョイスティックの持つボタンの総数 |
GetAxesCount | ジョイスティックの持つアナログスティックの数 |
GetButtonState | 指定した番号のボタンの押し状態 |
GetAxisState | 指定した番号のアナログスティックの倒し具合 |
なし
なし
このインスタンスを取得するには、JoystickContainerクラス内のGetJoystickAt関数を呼び出す必要があります。また、ジョイスティックの接続状態をRefreshAllJoysticks関数にて更新することができます。
Joystickクラスのサンプルです。
/// <summary>
/// Joystickのサンプル。ジョイスティックによる入力を取得しています。
/// </summary>
class Joystick
{
[System.STAThread]
static void Main(string[] args)
{
// AC-Engineを初期化する。
var initialized = ace.Engine.Initialize("Joystick", 640, 480, new ace.EngineOption());
ace.JoystickContainer container = ace.Engine.JoystickContainer;
// 0番目のジョイスティックが接続されているか否かを確かめる
if (container.GetIsPresentAt(0))
{
// 一つも接続されていない場合は終了する
System.Console.WriteLine("No joystick are connected.");
ace.Engine.Terminate();
return;
}
// AC-Engineのウインドウが閉じられていないか確認する。
while (ace.Engine.DoEvents())
{
// 一つ目のジョイスティックの0番目のボタンの入力状態を表示する
switch (container.GetJoystickAt(0).GetButtonState(0))
{
case ace.JoystickButtonState.Free: //前フレーム、現フレーム共に非押下。
System.Console.WriteLine("Free");
break;
case ace.JoystickButtonState.Hold: //前フレーム、現フレーム共に押下。
System.Console.WriteLine("Hold");
break;
case ace.JoystickButtonState.Release: //前フレームで押下、現フレームで非押下。
System.Console.WriteLine("Release");
break;
case ace.JoystickButtonState.Push: //前フレームで非押下、現フレームで押下。
System.Console.WriteLine("Push");
break;
}
// AC-Engineを更新する。
ace.Engine.Update();
}
//AC-Engineの終了処理をする。
ace.Engine.Terminate();
}
}