Siv3D / OpenSiv3D

C++20 framework for creative coding 🎮🎨🎹 / Cross-platform support (Windows, macOS, Linux, and the Web)
https://siv3d.github.io/
MIT License
1.02k stars 140 forks source link

Mac OSにおいて、Joy-Conの入力が反映されない #1260

Open Appbird opened 3 months ago

Appbird commented 3 months ago

予期しない動作の内容 | Describe the unexpected behavior Mac OSにおいて、Joy-Con (L/R)の入力を与えてもJoyConクラスのボタン・スティック入力値に反映されない。

再現方法 | To Reproduce

*2のコード

# include <Siv3D.hpp>

void Main()
{
    Scene::SetBackground(ColorF{ 0.9 });
    Window::Resize(1280, 720);
    Effect effect;

    Vec2 left{ 640 - 100, 100 }, right{ 640 + 100, 100 };
    double angle = 0_deg;
    double scale = 400.0;
    bool covered = true;

    while (System::Update())
    {
        Circle{ Vec2{ 640 - 300, 450 }, scale / 2 }.drawFrame(scale * 0.1);
        Circle{ Vec2{ 640 + 300, 450 }, scale / 2 }.drawFrame(scale * 0.1);

        // Joy-Con (L) を取得
        if (const auto joy = JoyConL(0))
        {
            joy.drawAt(Vec2{ 640 - 300, 450 }, scale, -90_deg - angle, covered);

            if (auto d = joy.povD8())
            {
                left += Circular{ 4, *d * 45_deg };
            }

            if (joy.button2.down())
            {
                effect.add([center = left](double t) {
                    Circle{ center, 20 + t * 200 }.drawFrame(10, 0, AlphaF(1.0 - t));
                    return t < 1.0;
                    });
            }
        }

        // Joy-Con (R) を取得
        if (const auto joy = JoyConR(0))
        {
            joy.drawAt(Vec2{ 640 + 300, 450 }, scale, 90_deg + angle, covered);

            if (auto d = joy.povD8())
            {
                right += Circular{ 4, *d * 45_deg };
            }

            if (joy.button2.down())
            {
                effect.add([center = right](double t) {
                    Circle{ center, 20 + t * 200 }.drawFrame(10, 0, AlphaF(1.0 - t));
                    return t < 1.0;
                    });
            }
        }

        Circle{ left, 30 }.draw(ColorF{ 0.0, 0.75, 0.9 });
        Circle{ right, 30 }.draw(ColorF{ 1.0, 0.4, 0.3 });
        effect.update();

        SimpleGUI::Slider(U"Rotation: ", angle, -180_deg, 180_deg, Vec2{ 20, 20 }, 120, 200);
        SimpleGUI::Slider(U"Scale: ", scale, 100.0, 600.0, Vec2{ 20, 60 }, 120, 200);
        SimpleGUI::CheckBox(covered, U"Covered", Vec2{ 20, 100 });
    }
}

発生環境(デスクトップの場合) | Desktop (please complete the following information):

備考 | Additional context

Reputeless commented 2 months ago

ご報告ありがとうございました。同様の問題を手元の macOS 環境で確認しました。 ユーザ側のコードでは対処ができないので、エンジン側での対処に向け調査します。

Appbird commented 2 months ago

承知しました。対応していただき本当にありがとうございます。