主人公(プレイヤー)キャラを飛行に変更せずに二段ジャンプをする方法
二段ジャンプにはいくつか種類が存在するが、某共同制作のほうで使用した方法を書いておく。
事前準備
二段ジャンプさせたいプレイヤーキャラ(以下、プレイヤー)のほかに、1体だけコンピューターキャラ(以下、キャラJ)を用意する。
キャラJはブロックに当たる飛行に設定しておき、ショットが当たらない無敵、透明ON、体当たりダメージ0にしておく。勢力はプレイヤーと同じにしなくてもいい(軽量化意識のためにエネミーと同じ勢力にするのも可)。
敵キャラのブロックの当たり判定はできる限りプレイヤーと同じかそれ以下にする。同じが望ましい
プレイヤー側のフロー設定
キャラ変数あるいはコモン変数など(以下、変数A)を一つ使用する。
以下の3つのフローをプレイヤーに追加する。
プレイヤーが「ブロック(ブロックキャラ含む)に乗っている でない」かつ変数Aが0で、ジャンプに割り当てているキーが離されている時のみ、変数Aの値を1にする。
変数Aが1かつ、ジャンプに割り当てているキーが押された時にキャラJを召喚し、変数Aの値を2にする。
プレイヤーが「ブロック(ブロックキャラ含む)に乗っている である」時、変数Aの値を0にする。
キャラJ側のフロー設定
以下のフローをキャラJに追加する。
ターゲットの設定で親キャラをターゲットにする。何番でも問題ない。プレイヤーキャラは初めからターゲット1に設定されているので、このフローは追加しなくてもいい。
常時、親キャラのX座標に速度200ズレなしで誘導移動する。敵キャラのブロックの当たり判定の横幅がプレイヤーと違う場合、できるだけ敵キャラの当たり判定の端がプレイヤーの当たり判定の前方の端に合う位置まで誘導する。
常時、親キャラのY座標をキャラJのY座標にする。敵キャラのブロックの当たり判定の縦幅がプレイヤーと違う場合、できるだけ敵キャラの当たり判定の上端がプレイヤーの当たり判定の上端に合う位置まで調整する。
移動フロー。円移動などでジャンプ挙動を疑似的に再現する。横方向の移動を無効化した円移動など。頂点部分に到達するタイミングでキャラJを消滅させる。
ジャンプに割り当てているキーが離された時、キャラJを消滅させる。その際、キーが離されたタイミングでプレイヤーのジャンプ上昇も急に止まるので、消滅させる前に数ドットの移動コマンドをはさむといい。
キャラJの上部にブロックが当たった場合、キャラJを消滅させる。
メリット
飛行状態にしないので、表現の幅が広がる。
慣性移動を使用する場合、不自然な挙動にならない(アクエディ4では飛行状態変更時に慣性移動がなくなる)
デメリット
二段ジャンプ中はブロック上部に頭をぶつけた風に見えるだけで、実際はぶつけたことにならない。