MacOS

NSResponderのkeyDown()とI/OKitのIOHIDManagerのInputValueCallbackの反応速度の違い

ナノ秒の精度で時間を計測できる mach_absolute_time() で検証しました。 NSResponderはSpriteKitのシーンが保持するとあるSKNodeで,keyDown()時の速さを測定しました。 ちなみにSKNodeはfirstResonderになっています。 結論 ものすごくざっくり言うと,I/O…

macOSで音ゲーを作る上での障壁と懸念事項

macOSで動く音ゲーを開発したい 最近SpriteKitの記事をよく書いていますが,macOSで動く本格的な音ゲーを作りたいと思いチマチマと下準備を進めていました。 前の記事で紹介したリポジトリがまさにそれです。 以前からそれらしいものを組んで検証していたの…

MacでHID準拠USBゲームコントローラの値を取得したい

コントローラがどんな種類の入力をもっているかスキャンできるコードを紹介します。 このプログラムの管理下にあるときは任意のタイミングで入力の状態がどうなっているかもチェックできます。 startメソッド の無限ループはチェックのためにその場におきま…

SpriteKitのSKSceneでShiftKey(装飾キー)をハンドリングする方法

SKSceneはNSResponderを継承しているはずなのに,なぜかfunc flagsChanged(with event: NSEvent) を継承してもコールバックが呼ばれないので,extensionで解決してみました。 extension SKView { override open func flagsChanged(with event: NSEvent) { scen…