〜ジャンプの動作は落下する処理が再現できれば簡単です。ゲーム画面で見えている以外の部分に必要な処理がいくつかあります。横スクロールでジャンプをするゲームを作る場合には必須の作業になりますが、スクリプトで最も多用する変数の分岐を使った要素が出てくるので、ここでだいたいの流れを覚えてしまいましょう。今回は少し長いですが、この部分が理解できればスクリプト入力の基礎をマスターしたのも同然です。自分で入力しながら覚えていきましょう。ボタン入力ジャンプをするにはどうしたら良いでしょうか。ジャンプをする為にボタンの判定、そして飛び上がる動作が必要になってきます。ボタンの判定から作っていきましょう。今回も関数入力支援ウィンドウから探してみる事にします。具体的にボタンを押したかどうかの判断ができる関数は見つからないのではないでしょうか。実はボタン入力に関しては“変数”を使う事になります。変数は関数のように入力支援が無いので、どういったものがあるかを知るにはマニュアルのリファレンスにある変数一覧を見るか、スクリプト入力画面で変数を選択した時に右下に表示される説明を見るしかありません。必要な変数を探しやすいと思います。(マニュアルの関数一覧と変数一覧は印刷しておくのがお勧めです)それでは、ボタン入力の判定方法を作成します。思う人もいるかもしれませんが簡単です。ボタン入力の判断に使える変数には大まかに以下の3種類があります。キー、ジョイスティック1番のボタン2の判定をする『sTrB2Z』を使いたいと思います。詳しくは『スクリプトの基本』にある『変数の入力方法』を参考にしてください。話を戻して、変数の説明を見てみましょう。キー、ジョイスティック1番のボタン2が押された瞬間だけ1が代入されると言う訳です。この格納された値から判断し、ボタンが押された時にだけジャンプの処理を実行させれば良いと言う事になります。ここで『スクリプトの基本』で説明していた条件分岐の出番です。格納された値から分岐させれば、ボタンを押した時とそうでない時の分岐が簡単に作れます。加算が自動で下に引っ張ってくれると言う寸法です。スクリプトを入力してみましょう。後に来るのはおかしいのでは無いかと思われるかもしれませんが、これは後ほど説明します。後に実行するようにしてください。それではスクリプトを実行してみましょう。キーもしくはジョイスティック1番のボタン2を押したらキャラクターがジャンプするようになったでしょうか。これでジャンプの動作が完成した訳ではありません。このままではジャンプボタンを連打するとどこまでもジャンプしてしまいます。これを防止する方法は次のステップで説明します。連続ジャンプ防止ジャンプするようになりましたが、このままではいつでもジャンプが連続して出せるので、ゲームとしては問題があります。『ジャンプしたら着地するまでジャンプできないようにする』と言う感じでしょうか。着地=マップチップに乗っていると考えると再現できそうな気がしてきます。下や横から衝突した場合も判定されてしまいます。関数で引数2で入力した変数です。関数の引数2の説明を見てみましょう。『2衝突向き(1=上,2=右,4=下,8=左→ビットフラグ)を代入する変数』と書いてあります。衝突方向のようなものです。詳しくはマニュアルに記載されていますので省略しますが、これを利用すれば衝突した方向が判断できると言うわけです。内容を画面左上に表示してみましょう。それぞれキャラクターから見た向きが代入されているのが分かるかと思います。4なら、マップチップはキャラクターの下に衝突していると判断できます。ここで思いつくのが下のようなスクリプトではないでしょうか。0実際に実行してみると問題なく動作しているようにも思えます。マップチップを下記のように配置してみたらどうでしょうか。壁に衝突している間ジャンプができなくなっていると思います。マニュアルのビットフラグに関する説明を読むと分かりますが、ビットフラグには衝突している方向の合計が格納されます。5行目以降のジャンプの処理が飛ばされてしまうのです。言うとても便利な関数を使う方法を紹介します。引数1と2にはビットフラグを格納している変数、そして引数3には衝突したかどうかの判断をしたい方向の値を入力するだけです。格納されるようになります。ある引数3に1を指定すれば同様の形で処理できます。頭の片隅にでも入れておいてください。本題に戻りますが、スクリプトは以下のようになります。関数にしてみました、これで床に乗りつつ壁に衝突していてもジャンプができるようになったと思います。実は未だジャンプに関しては問題が残っています。その話は次のステップで紹介します。今の状態では床に着地していないとジャンプのスクリプトは実行されなくなってしまいます。早いうちに修正しておきたい部分です。そこで、通常変数を使って分岐をさせる事にしてみます。スクリプトは以下の通りです。ジャンプ判断用の変数として使いました。0が代入されるようと言う感じです。着地している時にだけジャンプをさせる事が可能になります。空中でジャンプができてしまうのを防止する為の措置です。床から降りても空中ジャンプをできないようにします。応用の利くスクリプトになりました。これでジャンプの動作はようやく完成です。敵を上から踏みつける動作を作っていこうと思います。2-1』は製作中です。▲フレームが表示されない人はクリック。