【scratch】操作プレイヤ―ごとに役割キーを変える【上級者向け】
scratchで格闘ゲームを作りたい人のために…
概要
格闘ゲームのようなに自機の操作には数種類のキャラがおり、それぞれのキャラには移動キーや攻撃キーが押されたときの動作が割り当てており、それらのキーは操作するプレイヤーによって別々のキー入力によってなっています。例えば、プレイヤー1がキャラAを選んだら、そのキャラはプレイヤー1のキー配置で動くとする。一回対戦が終わって、次の対戦で今度はプレイヤー2がキャラAを選ぶと、そのキャラはプレイヤー2のキー配置で動くようになり、プレイヤー1が操作するキーでは動けなくなります。これをscratchで実現します。
サンプルジェクト
例として以下のサンプルプロジェクトを作成しました。
https://scratch.mit.edu/projects/229422402/

図:ゲーム画面の例
このプロジェクトでは、左右移動とジャンプができる「neko1」と「neko2」がおり、それぞれ操作しているプレイヤーは猫をクリックすることで変更できます。また、プレイヤー1の操作キーは右移動が「x」、左移動が「z」、ジャンプが「s」、プレイヤー2の操作キーは右移動が「m」、左移動が「n」、ジャンプが「j」になっています。
解説
中身の説明ですが、リストや関数をふんだんに使っているので、注意してください。(スプライト内の変数とリストには名前の頭に「$」をつけています)

図:「key」(透明)のスクリプト

図:「neko1」のスクリプト

図:「neko2」のスクリプト
何をやっているかわかりずらいかもしれませんが簡単に以下のように動いています。
まず、下の図のように、2つのリストのそれぞれの要素に対応しているキーが押されていれば1、押されてなければ0になります。

図:キーの読み取り
次に各キャラクターが「$操作プレイヤー」変数と合うリストを「$アクションキー」にコピーします。

図:リストのコピー
そして、「$アクションキー」リストの要素に応じてキャラクターが動作する、これを繰り返しています。

図:キャラクターの動作