K3の住民

最近はレア社のゲームについては書いていませんが、一応レア社のゲームが一番好きな人です。『雪圀』で"圀"は"国"とほぼ同義ですが、国ではありませんって当たり前か(笑)。

【ムジュラ3D】「Weird Rise」が発生する法則「スラッシュの法則」

2017年6月28日、浮遊する原因も判明し、この技についてひとまとめにしました↓
http://ryoryoau24.hatenablog.com/entry/2017/06/28/201633

皆さん、こんにちは。雪圀です。
今回は「ゼルダの伝説 ムジュラの仮面3D」の一定の箇所で浮遊するバグ
「Weird Rise」が発生する法則について解説したいと思います。


この記事にて「Weird Rise」は重複した当たり判定の設定ミスにより起こるバグだと
いうことを解説したと思います。
今回の本題の前にそれについて分かりにくい、と思った方もいると思いますので
もっと分かりやすく説明しようと思います。

先ず、前に説明したときに用いた画像を用意します。

f:id:ryoryoau24:20170416114028p:plain
       図1 前回使用した画像

画像の通り、オブジェクト1とオブジェクト2を生成し、x軸、y軸(中心を0とする)を
指定出来るように設定しました。
ここから、右、上向きを正とし、その逆を負として、オブジェクト1のx軸最大値が
オブジェクト2のx軸最小値の範囲を超えたときに何か処理をさせます。例えば、
オブジェクト1を右方向に動かすとして、オブジェクト1のx最大値がオブジェクト2の
x最小値を超えると止まるという処理をさせるとします。

とりあえず、オブジェクト1のx軸最大値と、オブジェクト2のx軸最小値を指定し、
処理をさせてみます。

f:id:ryoryoau24:20170416114053p:plain
      図2 オブジェクトの軸指定

すると、オブジェクト1は確かにオブジェクト2のx軸最小値に行くと止まりますが、
それだけで止まるため、このようになります。分かりやすくするため、右方向だけ
ではなく、左方向にも動かして左右往復させてみます。

f:id:ryoryoau24:20170520151051g:plain
         図3 見えない壁

このように、オブジェクト2のx軸最小値以上にオブジェクト1を右方向に動かすこと
が出来ません。何故ならx軸の指定をしただけで、y軸の指定はしていないからです

ここで、オブジェクト2にはx軸の最小値を指定するだけでなく、y軸の最大値から
最小値まで指定することで、「x軸の最小値かつy軸の最大値から最小値」を指定した
ことになり、ここで初めて、オブジェクト2の左側に当たり判定を設定したことに
なります

この当たり判定を上下右側にもつけるとなると、左側のことも考慮しなければ
ならないので、かなり大変です。

ここからが重要で、角に当たった時の処理も考慮しなければなりません。例えば左上
に当たると、「左側の処理+上側の処理=???」となり、動作が不安定になります。
というか、素通りしたりします

特にブロック崩しを作るとなるとこのあたりの処理が大変で、New3DSに存在する隠し
ゲーム(インターネットブラウザにある。詳しくはググれ)ですら、角に当たった
とき、連続でブロックが壊せてしまう仕様を残しています。

つまり、これを「ムジュラ3D」の坂と坂の処理が重複したと考えると、変なことが
起きてもおかしくないわけです。

ここで、「ムジュラ3D」で「Weird Rise」が発生出来そうな箇所でも、出来る箇所
と出来ない箇所があります。
以上のことを知っていれば、「どの当たり判定と当たり判定が重複している軸で
発生出来るか」に絞って探せば「Weird Rise」が発生出来る箇所が分かるようになる
わけです。

で、今回、探してみて、法則を見つけたので紹介します。

先ず、注目してほしいのはマップです。マップにある情報は、リンクの位置と向き、
そして上から見た地形です。
このマップでの左右がx軸、上下がz軸となります。そして最も大切なのはリンクが
x軸、z軸と合わせて(例えばリンクが向いている方向がx軸、z軸ともに正であれば
マップ上右上に向いている、ということ)どこを向いているのかが、法則を見つける
カギとなります。

で、分かったことが、「Weird Rise」を起こすときのリンクの向きが、第一象限
(リンクの向きがx軸、z軸ともに正(右上方向)である状態)と第三象限(リンク
の向きがx軸、z軸ともに負(左下方向)である状態)であれば、必ず起こるという
ことが分かりました。
「Weird Rise」をする向き、というのは「Weied Rise」が拡張出来るときのリンク
の向きを表します。
ここで重要となってくるのが、「第一象限か第三象限」の条件に合致していれば
第二象限、弾四象限の条件と合致してしまっても発動する、ということです。
(※分かりづらかった人の為に、補足を用意しました。良ければどうぞ↓
  http://ryoryoau24.hatenablog.com/entry/2017/05/21/105600


第一象限、第三象限は単位円で表すと、このような感じです。

f:id:ryoryoau24:20170520162817p:plain
   図4 第一象限、第三象限

ここで、第一象限、第三象限に斜めの線が引くことが出来ませんか?そして、その
形が/(スラッシュ)にとても似ていませんか?

f:id:ryoryoau24:20170520164714p:plain
  図5 スラッシュの法則の由来

以上から、僕はこの法則を「スラッシュの法則」と呼んでいます。この法則が
「Weird Rise」の条件の全てです。

更に面白いことにこの「スラッシュの法則」、「Weird Rise」が拡張出来る向きが
斜めであればあるほど良く拡張できるという、不思議な特性を持っています。
「Weird Rise」が箇所によって拡張出来る差が存在するのはそのせいかもしれません
ね。


以上、「Weird Rise」の条件に当てはまる「スラッシュの法則」の紹介でした。

今回はこれくらいにしときます。