見出し画像

カービィボウル ヤクモノ論14:ウィスピーウッズ

これまでヤクモノについて扱ってきたが、今回からはカービィボウルに登場する3種のお助けキャラ「ウィスピーウッズ」「クラッコ」「ゴルドー」について解説していこうと思う。まずはウィスピーウッズから。

※この記事ではウィスピー、ウィスピーウッズ、アオダモを同じ概念として扱います。表記の揺れがありますがご容赦ください。

1.先行研究

【制限TAP】3つのボタンでカービィボウル完全版 part6
TASさん的テクニック講座:アオダモ革命 より

ウィスピーウッズの挙動の先行研究として最も有名なのは👆のなるしす氏の動画だろう。

基本3用途

ウィスピーウッズ(アオダモ)の基本の使い方として、以下の3つが紹介されている。

(1)返し(ターン)
アオダモに当たることで方向を反転させる。
※もともとは「ターン」と呼ばれていたが、「~~し」で統一したいので「返し」とも呼ぶことにした。

画像
図1.1:返し(ターン)の概念図

(2)ずらし
ラインをずらしてアオダモに当たることで方向を変える。左右キーが壊れた状態でクリアしたい場合に特に有効で、「神のA地」から脱出して到達可能領域を広げるために利用される。

画像
図1.2:ずらしの概念図

(3)戻し
様々な事情でずらしたラインを元のラインに戻す。

画像
図1.3:戻しの概念図

跳ね返り挙動の解釈

 先行研究では、ウィスピーを完全な円形・カービィを点と考えて反射角度が計算されていた。

画像
図1.4:カービィの位置による反射方向の違い

「返し」のためにはブロックの中心点を通る必要があり、「ずらし」「戻し」のためにはブロックの中心点からずれた場所を通る必要があるという考え方である。

2.先行研究の疑問点

動画を注意深く観てみると、以下のような疑問が浮かび上がってきた。

疑問1:「戻し」後のカービィの位置がライン中央に寄りすぎていないか?

画像
図2.1:「戻し」後のカービィの位置

 先行研究中の図1.3からは、「戻し」の後はブロックの中央ラインからずれることが想定される。しかし冒頭の動画でのカービィの位置は、ほぼブロックの中央を通っていると思われる。そしてこの後もカップ淵に引っかからずにすんなりと入ってしまっている。

疑問2:ウィスピーウッズの端に当たった時、ほぼ真横に跳ね返る

 カービィを点と考えるなら、ウィスピーウッズの端に当たった場合にはカービィの進行方向はほとんど変わらないはずである。しかし、私が先日投稿した👇の動画では、ウィスピーの端に当たったにもかかわらずほぼ真横に跳ね返っている。

 この結果から少なくとも、ウィスピーウッズのみ面積のある円形、カービィを点という考えは誤りであることが分かる。

3.新説提案

 ではどのような処理になっているのだろうか?主に上述の疑問1および2より、私は以下の説を提唱する。

ウィスピーウッズと衝突後にカービィが跳ね返る方向は、ブロックの中心から衝突地点を結ぶ線分(=法線)の延長線上である。

画像

 つまり、カービィが跳ね返る角度には、入射角は全く関係なく、ウィスピーウッズに当たった座標のみが重要であるという説である。先述のなるしす氏の「戻し」の例においては、ウィスピーウッズに当たった地点のブロック内Y座標が0x8000付近であるから、180°方向に跳ね返っているだけだと言いたい。

新説を裏付ける根拠:「戻し」の後に「返し」が成立する。

先行研究が正しければ、「戻し」された後、再びウィスピーに向かってぶつかった場合、最初の地点に戻るはずである。しかし👇のように、「戻し」された後に来た道を戻るような実験を行ったところ、「戻し」の後には「返し」が発生した。この現象は、カービィの反射後の進行方向が衝突地点の座標にのみ依存していると言える根拠なのではないだろうか?


4.計算方法

当たり判定

 当たり判定の水平部分は、X, Yともにブロック内座標が0x4000以上0xBFFF未満の時である。次座標を計算してこの範囲内にあるときに、ウィスピーウッズと衝突したとみなされる。
 ここで、当たり判定自体は正方形であることに注意してほしい。

画像
図4.1:ウィスピーウッズの当たり判定は正方形

衝突後の速度 計算手順

<考え方>
ウィスピーウッズと衝突した場合、衝突地点での法線方向にカービィの向きが変えられる。

  1. ブロックの中心から見た、衝突地点の角度を求める。これは法線の向きと等しい。

  2. カービィの向きを回転させる角度の大きさを、
    (目標とする法線の向き)ー(現在の進行方向)により求める。

  3. 手順2で求めた角度が正の場合は、その分だけ反時計回りに、
    負の場合は、正負反転させてその分だけ時計回りに、
    現在の速度を回転させる。
    ※負の場合は360°足せばいい気もするが、そうなっていない。

<例>
以下の条件を考える。

画像
図4.2:計算例の条件
  1. ブロックの中心は(0x8000, 0x8000)であり、中心から見たカービィの位置は(0x1CC1, 0x3C2A)である。
    0x1CC1 × 256 ÷ 0x3C2A = 7361 × 256 ÷ 15402 = 122.
    arctan(122/256) = 25° ※90°から負方向
    →法線ベクトルの向きは65°である。

  2. (目標とする法線の向き)ー(現在の進行方向)
    =65° - 223°
    =-158°
    したがって、時計回りに158°回転させればよい。

  3. u_x = v_x \cos 158\degree + v_y \sin158\degree = 0x05FF
    u_y = -v_x \sin 158\degree + v_y \cos158\degree = 0x0CF6


この仕様は一見不思議なようだが、見た目上そこまで違和感はない。というのも、実際はカービィにも体積があるのだから、そもそもカービィを点と考えて計算するのが異常である。

むすび:本当に進路指導していたのは誰か?

 ニコニコ動画のコメントでは、語呂の良さからゴルドー先生やクラッコ先生がよく針路指導していると言われているが、私に言わせてもらうとあんなのはただぶつかっているだけである。以前にカービィが痛がっているのも能力の1つであると説明したが、クラッコやゴルドーに衝突してカービィが加速するのはカービィの能力によるものである。一応クラッコやゴルドーがカービィの能力を目覚めさせたという解釈もあり得るが、それだとダメージゾーンの針とやっていることは変わらないため、その解釈には無理がある。しかしウィスピーウッズだけはただの衝突ではなく、ウィスピーウッズが意志を持ってカービィをあるべき進行方向に送り出しているのである。本当の意味で進路指導をしていたのはウィスピーウッズだったのだ。

 能力を使用していない状態でウィスピーウッズに衝突すると、まるで意地悪をしてカービィの進行を邪魔するかのように怒った表情をするが、これは怒っているのではなく、カービィを正しい方向へと導くために気合を入れていると考えるべきだ。

画像
図5.1:カービィを導くために気合を入れるウィスピーウッズ


いいなと思ったら応援しよう!

Koten/紫雨陽介 よろしければ応援お願いします。解析速度がはやまります。

ピックアップされています

カービィボウル ヤクモノ論

  • 20本

コメント

コメントするには、 ログイン または 会員登録 をお願いします。
絵は七瀬武雄さんから ・文学部日本「古典」分野出身のシステムエンジニア ・日本カービィボウル学会所属・球体力学専攻 ・生成AIには書けないような記事を書くように心がけています。 ・アモアス・パズル・麻雀など
カービィボウル ヤクモノ論14:ウィスピーウッズ|Koten/紫雨陽介
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1