キューブラッシュ実戦攻略(1) [1]の待機位置
ここからは, より実戦向けの内容とし, 場面ごとの攻略法を解説する.
今回は, 最初のキューブである[1](加速するx座標はゲージ表記で?)をどこで待機するのかをテーマとする.
キューブが自機を狙って加速する挙動についてざっとおさらいすると
加速し始めるx座標は, 出現順序(番号)に関連付けられている
どの角度にでも加速できるわけではなく, 軌道の角度は離散的(中間の状態が存在しない)である
という性質なのであった.
よって,
出現ラインと出現順序の組合せから決定される決まり切った座標から離散的な角度でしか加速できないということは, 離散的な位置にしかキューブは着弾できない(「中間の着弾位置」が存在しない)
ということであり, さらに言うと,
その視点からすると,
どういった出現ラインの場合に
どのキューブに対して
自機をどこに置くべきなのか
も決まってしまう
ということである.
キューブラッシュの数値シミュレーション
キューブが画面下端に着弾するときのx座標を数値シミュレーションする方法を述べる.
直線の方程式
原点を通り, 傾き(要するに「縦横比」)が$${m}$$であるような直線の方程式は
$${y=mx}$$
である.
また, 変数$${x, y}$$からなる方程式$${f(x,y)}$$を, $${x}$$方向に$${p}$$, $${y}$$方向に$${q}$$だけ平行移動させた方程式は, $${x}$$と$${y}$$をそれぞれ$${x-p}$$と$${y-q}$$に置き換えた
$${f(x-p, y-q)}$$
である.
原点を通る直線を$${x}$$方向に$${p}$$, $${y}$$方向に$${q}$$だけ平行移動させると, 必ず点$${(p, q)}$$を通るようになるので, 点$${(p,q)}$$を通り, 傾きが$${m}$$であるような直線の方程式は
$${(y-q)=m(x-p)}$$
である.
さらに, $${x}$$軸の正の向きを基準とし, そこから反時計回りに測った$${x}$$軸と直線との角度を$${\theta}$$とすれば, 直線の傾き$${m}$$は
$${m=\tan{\theta}}$$
となるので, 直線の方程式は
$${(y-q)=(x-p)\tan{\theta}}$$
となる.
この式を$${x}$$について解けば
$$
\begin{align}
(y-q) &= (x-p)\tan{\theta}\notag\\
x-p &= \frac{y-q}{\tan{\theta}}\notag\\
x &= p + (y-q) \div \tan{\theta}\tag{*}
\end{align}
$$
となる.
通る点の指定
通る点$${(p,q)}$$を指定しなければならないが, これはキューブが自機を狙って加速する瞬間の座標を指定するとよい.
キューブが自機を狙って加速する瞬間の座標を
(X[mino], Y[mino])
とする.
Y[mino]の値
これは出現ラインの高さと一致するので, それをそのまま用いる.
X[mino]の値
一方こちらは若干工夫が必要で, キューブを真下に落とす実験を行って値を推定した.
録画した動画をコマ送りにし, 当たり判定の枠とゲージを目視することにより
X≒11.5[mino]
であると推定した.
なお, 同様の実験を[4], [5], [8], [9]についても行ったところ,
[4], [5]については
X≒15.5[mino](ゲージ表記で!>)
[8], [9]については
X≒9.5[mino](ゲージ表記でO)
と推定された.
着弾位置のy座標
0[mino]のラインで出現したキューブを真横に飛ばすと, 途中で何にも引っ掛かることなく画面左端まで飛ぶことからも分かる通り, キューブの着弾位置のy座標は0[mino]よりも下にある.
それを求めるために, 一番上の11[mino]のラインで出現したキューブを45°で落とす実験を行った.
すると, 着弾位置のx座標は
x≒0[mino]
であった.
先程の実験結果を用いると, 加速の瞬間の座標は
(11.5[mino], 11[mino])
である.
45°でキューブが動くということは, 縦の移動量と横の移動量は等しいはずなので, x軸との交点の座標は
(0.5[mino], 0[mino])
となっていなければならない.
そこから左に0.5[mino]さらに移動してから着弾したということは, 下にも0.5[mino]移動したということなので, 着弾位置のy座標は
y≒-0.5[mino]
と推定される.
Excelによるシミュレーション
Excelでは三角関数の引数(argument)に弧度法([rad] : ラジアン)を用いるので, 度数法で角度を指定したい場合はRADIANS関数を用いる.
式(*)を元にして, 入力は次のような形になる
= 11.5 + (-0.5 - Y) / TAN(RADIANS(θ))
Y, θの値を様々変えて, 着弾位置のx座標を求める.
表示形式は数値を指定し, 小数点以下の桁数は2とする.
なお, 自機はx軸よりも下には移動できないので, キューブを誘導する目安とするために, x軸との交点もついでに計算する. 上の式の-0.5となっている部分を0に変えればよい.
シミュレーション結果
[1]に関するシミュレーションの結果は次の表のようになった.
繰返しになるが, キューブの着弾位置は離散的であるから, 決まった着弾位置が得られたら, それらの中間の状態は存在しない.
これ以外の誘導をしようとしても無駄である.
例えば,
2<x<3
の着弾位置, すなわち[M]の左半分には絶対に[1]は着弾しない. 誘導できなくても, それはプレイヤーのせいではない.
Y=0[mino]の場合に関しては, 画面下端に着弾させてカマクラの材料にすることができないので, 初めから考えに入れていない.
シミュレーション結果による[1]の待機位置の決定
[1]の待機位置を決定するにあたっては, 手前に来てから落下するように動くキューブに対応できるように, できるだけ手前にキューブを積むことができて, なおかつ最後のスクロールで潰されないだけの空間は確保できるのが望ましい.
シミュレーション結果で主に着目する点は3つある.
Y=10[mino]
x=1.00[mino]とx=4.48[mino]では, 1.00[mino]の方に着弾させたい.
よって, その場合(1.50[mino], 0.00[mino])を通したい.
Y=4[mino]
x=0.64[mino]とx=4.77[mino]では, 0.64[mino]の方に着弾させたい.
よって, その場合(1.84[mino], 0.00[mino])を通したい.
Y=2[mino]
x=5.46[mino]では, カマクラを作る位置としては前過ぎる.
しかし, x=-1.07[mino]では, 画面左下の角への着弾となってしまう.
よって, この場合は[1]を画面下端に着弾させてカマクラの材料とするのは望めないので, [1]の着弾位置を決定するにあたっては考えに入れない.
[1]の待機位置の結論
以上より, 大体(1.5[mino], 0[mino])に自機を置くのがよい.
そのためには, 自機の腹にある赤いドットを, [S]の「U」に合わせるとよい. この位置を「Uポジション(U position)」と呼ぶことにする.
Uポジションによって誘導される[1]の軌道は次のようになる.
自機をUポジションに置く限り, [1]のキューブはこれ以外の動きをすることはない.
それにより, 着弾位置から出現ラインを逆算することもできる.