ツクールMVでカービィ形式のダッシュを実装する【RxJS】

はいどーもこんばんはカービィ大好き男です。
アクツクMVの発売が近いということで、ツクールMVでカービィ風のダッシュを実装する方法を紹介しようと思います。
なお例によってRxの練習を兼ねているので、RxJSの導入が必須という残念プラグインとなっています。
その点だけご了承ください。

カービィ形式のダッシュってなんやねん

ツクールMVではシフトキーを押すことでダッシュのオン/オフを切り替えます。
これはこれで全然問題ないのですが、アクション風ゲームを作っている方は例えば「ダッシュキーを押しているときだけダッシュする」とか組み込んでますよね。
それをもう少し改造して、カービィ形式のダッシュを実装しようと、そういうわけなんですね。
で、カービィ形式のダッシュが何かと言うと、すなわち「キーを短い間に二回押したらダッシュする」「ダッシュ中はキーを入力している限りそのままダッシュし続けるが、プレイヤーが停止するとダッシュもOFFになる」「停止後にもう一度動くと、ダッシュは解除されているので歩く」あたりですかね。

なんでRxJSか

Rx抜きで作ると、この「キーを短い間に二回押したら~」という実装がめちゃんこ面倒くさいです。
ですがRxを使えばお茶の子さいさいなんですね。
こりゃもう使うしかないじゃろうと、そういうわけなんですね。
というわけでコードをドン(ファイルに保存してプラグインとして導入してください)。

わお短い!

お試しで作ったものなのでコードが荒いですが、どうでしょう。
要件は満たしています(シフトキーでのダッシュ切り替えは潰してます)し、行数はわずか20行ほどです。
もちろん改善点は腐るほどありますが、これだけ短ければ後から機能を追加するのもやりやすいんじゃないでしょうか。
例えばdashSubjectとwalkSubjectのストリームを合体させてどうこうとかできたらカッコイイんじゃないかなあ……。
あとはあんまりパフォーマンスがよろしくなさそうなので、そこの改善とかですかね……。

注*繰り返しになりますが、上記のコードを実行するにはRxJSをプラグインとして導入する必要があります。

終わりに

Rxにもだいぶん慣れてきました。
ですが「これやりたいんだけど、どうすりゃいいの?」と詰まることの方が多いので、引き続き入門サイトを眺めて学習を続けたいと思いますよ。

ほなそんな感じでまた。

フォローする