表示するサンプルコードの言語を指定できます。

ジョイステックの入力状態の取得

AltseedでJoystickを扱うには、まずEngineクラスが持つJoystickContainerプロパティを取得します。これは接続されているジョイスティック一覧を保存するコンテナであり、このコンテナからGetJoystickAtメソッドで0からの番号を指定すると、Joystickクラスのインスタンスを取得できるため、そこから入力状態を取得します。

ジョイステックにある全てのボタンの入力状態を取得

SS

C++


#include <Altseed.h>

/**
@brief  ジョイスティックにある全てのボタンの入力状態を取得するサンプル。
*/
int main()
{
    // Altseedを初期化する。
    asd::Engine::Initialize(u"Joystick_Basic", 640, 480, asd::EngineOption());

    // ジョイスティックの状態を表示するテキストを生成する。
    auto font = asd::Engine::GetGraphics()->CreateDynamicFont(u"", 25, asd::Color(255, 255, 255, 255), 1, asd::Color(0, 0, 0, 255));

    // ボタンの入力状態を表示する文字描画オブジェクトを設定して、エンジンに追加する。
    auto stateText = std::make_shared<asd::TextObject2D>();
    stateText->SetPosition(asd::Vector2DF(10, 5));
    stateText->SetFont(font);
    asd::Engine::AddObject2D(stateText);

    // ボタンをたくさん認識する可能性があるため行間を詰める。
    stateText->SetLineSpacing(-15);

    // Altseedのウインドウが閉じられていないか確認する。
    while (asd::Engine::DoEvents())
    {
        asd::astring displayStr = asd::ToAString("");

        // ジョイスティックが接続されているかどうかを確認する。
        if (!asd::Engine::GetJoystickContainer()->GetIsPresentAt(0))
        {
            displayStr += asd::ToAString("ジョイスティックが接続されていません。");
        }
        else
        {
            // 1つ目のジョイスティックの全てのボタンの入力状態を表示する。
            auto joystick = asd::Engine::GetJoystickContainer()->GetJoystickAt(0);

            for (int buttonIndex = 0; buttonIndex < joystick->GetButtonsCount(); ++buttonIndex)
            {
                auto state = joystick->GetButtonState(buttonIndex);
                if (state == asd::JoystickButtonState::Free) //前フレームと本フレームで非押下
                {
                    displayStr += asd::ToAString(("ボタン " + std::to_string(buttonIndex) + "を離しています。").c_str());
                }
                else if (state == asd::JoystickButtonState::Hold) //前フレームと本フレームで押下
                {
                    displayStr += asd::ToAString(("ボタン " + std::to_string(buttonIndex) + "を押しています。").c_str());
                }
                else if (state == asd::JoystickButtonState::Release) //前フレームで押下、本フレームで非押下
                {
                    displayStr += asd::ToAString(("ボタン " + std::to_string(buttonIndex) + "を離しました!").c_str());
                }
                else if (state == asd::JoystickButtonState::Push) //前フレームで非押下、本フレームで押下
                {
                    displayStr += asd::ToAString(("ボタン " + std::to_string(buttonIndex) + "を押しました!").c_str());
                }

                displayStr += asd::ToAString("\n");
            }

        }

        stateText->SetText(displayStr.c_str());

        // Altseedを更新する。
        asd::Engine::Update();
    }

    //Altseedの終了処理をする。
    asd::Engine::Terminate();

    return 0;
}

C#

/// <summary>
/// ジョイスティックにある全てのボタンの入力状態を取得するサンプル。
/// </summary>
class Joystick_Basic
{
    public string Description
    {
        get { return "ジョイスティックのボタンの入力状態を調べ、表示するサンプルです。"; }
    }
    public string Title
    {
        get { return "ジョイスティックのボタン入力"; }
    }
    public string ClassName
    {
        get { return "Joystick_Basic"; }
    }

    [System.STAThread]
    static void Main(string[] args)
    {
        // Altseedを初期化する。
        asd.Engine.Initialize("Joystick_Basic", 640, 480, new asd.EngineOption());

        // ジョイスティックの状態を表示するテキストを生成する。
        var font = asd.Engine.Graphics.CreateDynamicFont("", 25, new asd.Color(255, 255, 255, 255), 1, new asd.Color(0, 0, 0, 255));

        // ボタンの入力状態を表示する文字描画オブジェクトを設定して、エンジンに追加する。
        var stateText = new asd.TextObject2D();
        stateText.Position = new asd.Vector2DF(10, 5);
        stateText.Font = font;
        asd.Engine.AddObject2D(stateText);

        //ボタンをたくさん認識する可能性があるため表示の行間を詰める。
        stateText.LineSpacing = -15;

        // Altseedのウインドウが閉じられていないか確認する。
        while (asd.Engine.DoEvents())
        {
            string displayStr = "";

            // ジョイスティックが接続されているかどうかを確認する。
            if (!asd.Engine.JoystickContainer.GetIsPresentAt(0))
            {
                displayStr += "ジョイスティックが接続されていません。";
            }
            else
            {
                // 1つ目のジョイスティックの全てのボタンの入力状態を表示する。
                var joystick = asd.Engine.JoystickContainer.GetJoystickAt(0);

                for (int buttonIndex = 0; buttonIndex < joystick.ButtonsCount; buttonIndex++)
                {
                    var state = joystick.GetButtonState(buttonIndex);

                    if(state == asd.JoystickButtonState.Free) //前フレームと本フレームで非押下
                    {
                            displayStr += ("ボタン " + buttonIndex + "を離しています。");
                    }
                    else if(state == asd.JoystickButtonState.Hold) //前フレームと本フレームで押下
                    {
                            displayStr += ("ボタン " + buttonIndex + "を押しています。");
                    }
                    else if(state == asd.JoystickButtonState.Release) //前フレームで押下、本フレームで非押下
                    {
                            displayStr += ("ボタン " + buttonIndex + "を離しました!");
                    }
                    else if(state == asd.JoystickButtonState.Push) //前フレームで非押下、本フレームで押下
                    {
                            displayStr += ("ボタン " + buttonIndex + "を押しました!");
                    }

                    displayStr += "\n";
                }

            }

            stateText.Text = displayStr;

            // Altseedを更新する。
            asd.Engine.Update();

        }

        //Altseedの終了処理をする。
        asd.Engine.Terminate();
    }
}

Java

/**
 * ジョイスティックにある全てのボタンの入力状態を取得するサンプル。
*/
class Joystick_Basic 
{
    public java.lang.String getDescription() {
        return "ジョイスティックのボタンの入力状態を調べ、表示するサンプルです。";
    }
    public java.lang.String getTitle() {
        return "ジョイスティックのボタン入力";
    }
    public java.lang.String getClassName() {
        return "Joystick_Basic";
    }
    public static void main(String args[])
    {
        // Altseedを初期化する。
        asd.Engine.Initialize("Joystick_Basic", 640, 480, new asd.EngineOption());

        // ジョイスティックの状態を表示するテキストを生成する。
        asd.Font font = asd.Engine.getGraphics().CreateDynamicFont("", 25, new asd.Color(255, 255, 255, 255), 1, new asd.Color(0, 0, 0, 255));

        // ボタンの入力状態を表示する文字描画オブジェクトを設定して、エンジンに追加する。
        asd.TextObject2D stateText = new asd.TextObject2D();
        stateText.setPosition(new asd.Vector2DF(10, 5));
        stateText.setFont(font);
        asd.Engine.AddObject2D(stateText);

        // ボタンをたくさん認識する可能性があるため表示の行間を詰める。
        stateText.setLineSpacing(-15);

        // Altseedのウインドウが閉じられていないか確認する。
        while(asd.Engine.DoEvents())
        {
            java.lang.String displayStr = "";

            // ジョイスティックが接続されているかどうかを確認する。
            if(!asd.Engine.getJoystickContainer().GetIsPresentAt(0))
            {
                displayStr += "ジョイスティックが接続されていません。";
            }
            else
            {
                // 1つ目のジョイスティックの全てのボタンの入力状態を表示する。
                asd.Joystick joystick = asd.Engine.getJoystickContainer().GetJoystickAt(0);

                for(int buttonIndex = 0; (buttonIndex < joystick.getButtonsCount()); buttonIndex++)
                {
                    asd.JoystickButtonState state = joystick.GetButtonState(buttonIndex);

                    if((state == asd.JoystickButtonState.Free))
                    {
                        displayStr += (("ボタン " + buttonIndex) + "を離しています。");
                    }
                    else
                    {
                        if((state == asd.JoystickButtonState.Hold))
                        {
                            displayStr += (("ボタン " + buttonIndex) + "を押しています。");
                        }
                        else
                        {
                            if((state == asd.JoystickButtonState.Release))
                            {
                                displayStr += (("ボタン " + buttonIndex) + "を離しました!");
                            }
                            else
                            {
                                if((state == asd.JoystickButtonState.Push))
                                {
                                    displayStr += (("ボタン " + buttonIndex) + "を押しました!");
                                }
                            }
                        }
                    }

                    displayStr += "\n";
                }
            }

            stateText.setText(displayStr);

            // Altseedを更新する。
            asd.Engine.Update();

        }


        // Altseedの終了処理をする。
        asd.Engine.Terminate();
    }
}

ジョイステックにある全てのアナログスティックの入力状態を取得

SS

C++


#include <Altseed.h>

/**
@brief  ジョイスティックにある全てのアナログスティックの入力状態を取得するサンプル。
*/
int main()
{
    // Altseedを初期化する。
    asd::Engine::Initialize(u"Joystick_Axis", 640, 480, asd::EngineOption());

    // ジョイスティックの状態を表示するテキストを生成する。
    auto font = asd::Engine::GetGraphics()->CreateDynamicFont(u"", 35, asd::Color(255, 255, 255, 255), 1, asd::Color(0, 0, 0, 255));

    // アナログスティックの入力状態を表示する文字描画オブジェクトを設定して、エンジンに追加する。
    auto stateText = std::make_shared<asd::TextObject2D>();
    stateText->SetPosition(asd::Vector2DF(10, 10));
    stateText->SetFont(font);
    asd::Engine::AddObject2D(stateText);

    // Altseedのウインドウが閉じられていないか確認する。
    while (asd::Engine::DoEvents())
    {
        asd::astring displayStr = u"";

        // ジョイスティックが接続されているかどうかを確認する。
        if (!asd::Engine::GetJoystickContainer()->GetIsPresentAt(0))
        {
            displayStr += u"ジョイスティックが接続されていません。";
        }
        else
        {
            // 1つ目のジョイスティックの全てのアナログスティックの入力状態を表示する。
            auto joystick = asd::Engine::GetJoystickContainer()->GetJoystickAt(0);

            for (int axisIndex = 0; axisIndex < joystick->GetAxesCount(); ++axisIndex)
            {
                auto axisVal = joystick->GetAxisState(axisIndex);
                displayStr += asd::ToAString(("軸 " + std::to_string(axisIndex) + ": ").c_str());
                displayStr += asd::ToAString(std::to_string(axisVal).c_str());
                displayStr += asd::ToAString("\n");
            }

        }

        stateText->SetText(displayStr.c_str());

        // Altseedを更新する。
        asd::Engine::Update();
    }

    //Altseedの終了処理をする。
    asd::Engine::Terminate();

    return 0;
}

C#

/// <summary>
/// ジョイスティックにある全てのアナログスティックの入力状態を取得するサンプル。
/// </summary>
class Joystick_Axis
{
    public string Description
    {
        get { return "ジョイスティックのアナログスティックの入力状態を調べ、表示するサンプルです。"; }
    }
    public string Title
    {
        get { return "アナログスティック入力"; }
    }
    public string ClassName
    {
        get { return "Joystick_Axis"; }
    }

    [System.STAThread]
    static void Main(string[] args)
    {
        // Altseedを初期化する。
        asd.Engine.Initialize("Joystick_Axis", 640, 480, new asd.EngineOption());

        // ジョイスティックの状態を表示するテキストを生成する。
        var font = asd.Engine.Graphics.CreateDynamicFont("", 35, new asd.Color(255, 255, 255, 255), 1, new asd.Color(0, 0, 0, 255));

        // アナログスティックの入力状態を表示する文字描画オブジェクトを設定して、エンジンに追加する。
        var stateText = new asd.TextObject2D();
        stateText.Position = new asd.Vector2DF(10, 10);
        stateText.Font = font;
        asd.Engine.AddObject2D(stateText);

        // Altseedのウインドウが閉じられていないか確認する。
        while (asd.Engine.DoEvents())
        {
            string displayStr = "";

            // ジョイスティックが接続されているかどうかを確認する。
            if (!asd.Engine.JoystickContainer.GetIsPresentAt(0))
            {
                displayStr += "ジョイスティックが接続されていません。";
            }
            else
            {
                // 1つ目のジョイスティックの全てのアナログスティックの入力状態を表示する。
                var joystick = asd.Engine.JoystickContainer.GetJoystickAt(0);

                for (int axisIndex = 0; axisIndex < joystick.AxesCount; axisIndex++)
                {
                    var axisVal = joystick.GetAxisState(axisIndex);
                    displayStr += ("軸 " + axisIndex + ": ");
                    displayStr += axisVal;
                    displayStr += "\n";
                }

            }

            stateText.Text = displayStr;

            // Altseedを更新する。
            asd.Engine.Update();

        }

        //Altseedの終了処理をする。
        asd.Engine.Terminate();
    }
}

Java

/**
 * ジョイスティックにある全てのアナログスティックの入力状態を取得するサンプル。
*/
class Joystick_Axis 
{
    public java.lang.String getDescription() {
        return "ジョイスティックのアナログスティックの入力状態を調べ、表示するサンプルです。";
    }
    public java.lang.String getTitle() {
        return "アナログスティック入力";
    }
    public java.lang.String getClassName() {
        return "Joystick_Axis";
    }
    public static void main(String args[])
    {
        // Altseedを初期化する。
        asd.Engine.Initialize("Joystick_Axis", 640, 480, new asd.EngineOption());

        // ジョイスティックの状態を表示するテキストを生成する。
        asd.Font font = asd.Engine.getGraphics().CreateDynamicFont("", 35, new asd.Color(255, 255, 255, 255), 1, new asd.Color(0, 0, 0, 255));

        // アナログスティックの入力状態を表示する文字描画オブジェクトを設定して、エンジンに追加する。
        asd.TextObject2D stateText = new asd.TextObject2D();
        stateText.setPosition(new asd.Vector2DF(10, 10));
        stateText.setFont(font);
        asd.Engine.AddObject2D(stateText);

        // Altseedのウインドウが閉じられていないか確認する。
        while(asd.Engine.DoEvents())
        {
            java.lang.String displayStr = "";

            // ジョイスティックが接続されているかどうかを確認する。
            if(!asd.Engine.getJoystickContainer().GetIsPresentAt(0))
            {
                displayStr += "ジョイスティックが接続されていません。";
            }
            else
            {
                // 1つ目のジョイスティックの全てのアナログスティックの入力状態を表示する。
                asd.Joystick joystick = asd.Engine.getJoystickContainer().GetJoystickAt(0);

                for(int axisIndex = 0; (axisIndex < joystick.getAxesCount()); axisIndex++)
                {
                    float axisVal = joystick.GetAxisState(axisIndex);
                    displayStr += (("軸 " + axisIndex) + ": ");
                    displayStr += axisVal;
                    displayStr += "\n";
                }
            }

            stateText.setText(displayStr);

            // Altseedを更新する。
            asd.Engine.Update();

        }


        // Altseedの終了処理をする。
        asd.Engine.Terminate();
    }
}