spritekitを用いたMac向けのアプリでキーボードの同時入力を処理したい
自機としてPlayerクラスのインスタンスplayerを操作しようと考えています。
WASDの4つのキーで4方に移動しますが、keyDownとkeyUpでは押している間の移動はかろうじてできるのに対し、8方向への入力、つまり同時押しによる斜め方向への移動は不可能でした。
フレームごとにキー入力が受け付けられているようなので、switch文からifで記述もしてみましたが、うまくいきません。何か良いアイデアはありませんでしょうか。
override func keyDown(with event: NSEvent) {
if event.keyCode == 13 {
player.moveUp(distance: 10)
}
if event.keyCode == 0 {
player.moveLeft(distance: 10)
}
if event.keyCode == 1 {
player.moveDown(distance: 10)
}
if event.keyCode == 2 {
player.moveRight(distance: 10)
}
}
以上がkeyDownの中身です。
なお、PlayerクラスはmoveRight, moveLeft ...などのメソッドを持っていて、同名の関数などもありましたがoverrideはしておりませんので独自の関数です。
また中身は単純でPlayerのpositionの値をdistance(引数)に応じて動かすだけです