物理エンジンを使って、マリオギャラクシーににたステージを設計する方法を紹介しよう。
小学生でも理解できるレベルなので気軽で簡単、小学生では理解できないレベルの内容は全部削除しました。
楽しい製作が可能です。
簡単な道具、小学生でも理解できる理屈だけで作ります。
中学生なら一人でも、小学生なら説明がすこし難しいので大人の人と一緒に作ってみよう。
道具が簡単ということは複雑(ふくざつ)な形の星を作るのは無理だし、星の表面を動き回る敵を設定したりするのもスクリプトを使わないとなかなか大変だ。
この講座ではそういうものは作れないという問題もあるが、がんばり次第で結構面白い形のものを作ることも不可能ではない。
楽しんで読んでほしい。
磁力を使えばこんなに簡単。
まずは星を作ってみよう。
マリオギャラクシーといえば複雑な形の星の上で歩き回るのが魅力。
まずは星の上を動き回る方法を作ってみよう。
そのためにはどうすればいいか、使うのは磁力。
まあこの図を見てみよう。
星の上を走り回れる車の図だ。
この図は磁力を使って、複雑な形の星の上を動き回る方法を解説している。
するどい方ならすぐに気づくでしょうが磁力式の”おきあがりこぼし”やだるまさんですね。
星の中にはN極がたくさん。
矢印が磁力の向きになります。
車のなかには巨大なSとNの棒磁石が入っていますがこれが車を安定させます。
星の中には磁石のNが入っているので、車のSのほうが星のほうを向き、車のNのほうが上を向くことになります。
単純ですね。
星に置かれた棒磁石はまっすぐ垂直に立とうとします。
車の中に磁石を固定しておけば、磁力の向きにあわせてすっきり車が星に接地してくれます。
ベクトル場だ、メモリの参照だ、高速計算だ、難しいプログラムだ。
そんな難しいことを考えなくても、物理エンジンを使えば当たり判定と磁力の設定だけでマリオギャラクシーに似た簡単に作れるわけですね。
とっても楽ちん。
バグもまずなければ、高度な知識も要りません。
さてここで一工夫。
ゲームですのでNを弱く、Sを強くしておけばより車は安定します。
それだけでは車がひっくり返ったままのことも多いですので、車の外側に半球のボールをつけています。
車がひっくり返っているなら、車の中の磁石が回転し、それにつられて車全体もボールが回転するように回転してきちんと接地できます。
仕組みはとっても簡単です。
このことを数学や物理学の言葉では、安定解と不安定解なんて難しい言葉で表しますが、ここでもやっぱりこんな難しいことを考えなくても作れます。
こういう難しい言葉はもっと複雑なものを作るためにあるのでした。
次はジャンプの実装
ジャンプ、いろいろな実装方法がありますが、一番簡単なのは磁力のNとSをひっくり返したりすること。
それだけで星の上でのジャンプが実装可能です。
ジャンプ台
ジャンプ台はいろいろなジャンプが実現できます。
Vizimoという子供向けの簡素な物理エンジンで確認しながら作成しました。
図を載せておきますのでいろいろ想像しましょう。
図を見て興味を持った方は、Vizimoで忍者カー練習場(完成版)遊んでみてくださいね。
Vizimoでの作図法
地形に、磁力のNとSを分散して配置。
車は重さ90キロ、バランサーとして球関節の先に重さ10キロのボールをつないだ。
地形の重さは500キログラム以下。
ボールは物理運動あり、衝突判定なしとした。
車とボールの磁力を切り替えることで地形にひっつける。
車がN設定の地形に引っ付くときは、車の磁力をS、ボールの磁力をNに変更。
S設定のときは逆に、車の磁力をNにボールの磁力をSとした。
これだけでは、車がひっくり返ったままになることがおおいので車の上面に半球などをかぶせた。
これは、ヤドカリや昆虫がひっくり返るのと同じこととなる。
ひっくり返ったとき車は球がすべり、"だるまさん"のように起き上がることとなる。
ジャンプ台一覧
柱を使ったジャンプ台。
最初S極に設定された車と、N極に設定された柱が引き合い車は柱の側面を走ることが可能。
車は柱の側面を駆け上がり、柱の頂点に到達すると同時に磁力をNに切り替える。
柱と車が反発することでジャンプを行う。
壁に張り付き壁を登り、その後逆さジャンプをするジャンプ台の模式図。
最初車はN設定で壁を駆け上がる。
赤い線は車の磁力がNのままのルート。
垂直の壁で何度もバウンドしながら壁を駆け下る。
この時の滑り感は非常に楽しい。
緑と濃紺の線は、ジャンプ直後車の磁力をsに変更。
磁力s設定の星の近くに到達したところで車の磁力をNに戻した場合の軌道を現している。
残った線は、車の磁力をSにしたままとんだ場合の軌跡を表している。
どのルートも磁力の強さをいじって実験済み、きちんとこの軌道がとれることを確認してある。
一連のコースをつなげたもの。
最初、車はS極設定の壁をNのまま駆け下りる。
駆け下りた先には空中道路がまっているのでそのうえに移動。
空中道路の向かう先は2本のN極設定の円柱の間。
空中道路に到達すると同時に車の磁力をSに。
NとSにはさまれた車は磁力の力で加速。
円柱の磁力に押される形で車は空へ向かう。
空の上では卵形の星がお出迎え。
卵形の星の頂点で車の磁力をSに変更。
星の磁力と反発することで車は空を飛び、N極設定の星を掠めて地上の斜めになった道路の上にきれいに着地する。
このコースは図にしたとき見栄えが悪いが、これはこのページには実証したコースしか掲載しないという制約のためである。
宙に吊り下げられた十字架形のジャンプ台からジャンプする模式図。
十字架は重心位置で棒としっかり接続されている。
棒の上端は球体間接となっており、十字架はゆれることとなる。
2本の円柱はN極に、遠くに見える板はS極に設定されている。
画面中に見える折れ曲がった半透明のパイプは車のジャンプコースとなる。
車は最初十字架の上を走り、加速した状態でジャンプする。
ジャンプ時車は、S極の磁力を発する設定になっている。
2本の円柱はN極に設定されているのでこれに車が引っ張られ、車は橋の下をくぐることとなる。
車が橋の下をくぐると同時に車の磁力をN極に反転。
すると車はN極同士で反発。
S極の板に引っ張られることとなる。
このときの浮遊感はパラグライダーによく似ている。
最初の加速時、車が走ることとなる十字架はゆらゆらゆれるがこのときのゆれ方はかなり楽しい。
真ん中の棒は邪魔なので、ゲーム中ではあたり判定なし、非表示としている。
十字架のそこかしこに磁力を設定すると十字架のゆれ方が変わるがこれはかなり楽しいこととなる。
- このジャンプ台の名前は球体式ジャンプ台、丸い星の上を走って加速し、ジャンプ台でジャンプするシステムとなっている。
- 利点は星の上のジャンプ台の位置と向きと高さと磁力の切り替えタイミングを変更するだけで、多種多様なジャンプ台が可能なこと。
球体式ジャンプ台の発展系。
- これは球体式ジャンプ台に到達するためのジャンプ台の模式図
- 磁力の強さを変更することで何種類かの空中軌道が得られる。
- すこし磁力の強さを変更することと、最初のジャンプの位置やジャンプ前の車の速さを変更するだけでいろいろな空中軌道が作れるのが楽しいところ。
- 磁力の設定を絶妙に変化させると、車が空中で振り子のようにゆれる軌道を作ることもできるが、これはどちらかというとレースコースに使いにくいので製作者の楽しみ程度にしたほうがよい。
- 次に変化させたときの一例をひとつ見せる。
円柱式ジャンプ。
- 2本の巨大なN極の円柱が大地に突っ立ているのを真上から見た図。
- 灰色の矢印は磁力の向き。
- 車はS極設定、円柱はN極設定となっている。
- 2つのN極は平行で長く伸びた棒磁石であり、水平方向に車をひっぱることとなる。
- 図にあるとおり磁力の強さを変更することで多種多様なジャンプが可能。
- 車の空中での飛び方の基本は高さ方向が放物線で、水平方向の移動がS字を伸ばしたり切ったりしたものとなる。
- また、ジャンプ中車のN、S、磁力無効、磁力の強さを変更することで多種多様なジャンプが可能となっているので試してみてほしい。
車がトランポリンで大ジャンプする図。
- 車がトランポリンにあたると同時に車の磁力をNに変更している。
- これから発展してトランポリンを斜めや縦にしてみたり、空中に配置してみるともうちょっと楽しい。
もしジャンプ中に、ユーザーの操作しだいで車の磁力を反転できるようにしておけば、空中での車の軌道は大きく変わる。
加速装置などでもよい。
これはとても楽しい空中軌道がたくさんできるので少し研究するとよい。
おまけ
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (半球式コーナー)
- 半球を縦にしたコーナー。
- 半球の天辺では車は逆さとなり、逆さにコーナーに張り付くこととなる
-図はわかりにくいので3DCGとした、作図にはGSUを使用。
磁力を採用する理由を解説しましょう。
元ネタとなるマリオギャラクシーを力学系の用語で分析すると、重力がマリオの動きを束縛し、マリオのジャンプが大移動を可能としています。
リアプノフ指数(リャプノフ指数とも表記する)が小さくなる要素が重力。
大きくなる要素がジャンプです。
この二つの要素を勘案すると、マリオのリアプノフ指数は思いのほか小さくなります。
リアプノフ指数が小さいということは、先の予測がつきやすくなります。
つまり意外な動きがきわめて少ないということで、単調さが付きまといます。
マリオギャラクシーは根本的に単調なゲームたることが宿命付けられています。
ここの講座で磁力を採用する理由はここです。
車は磁力によって反発や吸引され、星や地形のいろいろなところに引っ付きます。
NとN、SとSの反発で車の軌道のリアプノフ指数が大きくなり、NとSの吸引でリアプノフ指数が小さくなりやすくなります。
車の磁力のNとSを反転することで、空間内のリアプノフ指数が反転し、車の軌道に意外な動きと適度なリアプノフ指数を導入することができます。
また、NとSを組み合わせることで、ジャンプ地点と着地地点をある程度固定することができます。
これは製作者にとってはとても楽なことです。
願わくば、スーパーマリオギャラクシー2にリアプノフ指数を意識したステージが増えますように。
というのは著者の願いです。
ちなみに、2Dマリオは力学系ではピンボール系に分類され、ジャンプや敵の踏み付けで大ジャンプできることがピンボールでいえば盤上のギミックにボールがあたることに相当します。
数学を知らない人には信じられないことかもしれませんが、NewスーパーマリオブロスDSまでの2Dのマリオはピンボールやパチンコを横に引き伸ばしたものと解釈できます。
亀やキラーや蜘蛛をうまく踏んでジャンプする=リアプノフ指数が増加する、ピンボールでいえばボールを大きく弾き飛ばすギミック。
マリオがジャンプしブロックや敵にあたるかあたらないか=ピンボールやパチンコで言えば釘に当たるかあたらないかに相当。
マリオが平行移動する=ジャンプの場所を調整できる=リアプノフ指数が下がる。
2Dでは敵の密度が高いために、このリアプノフ指数の変化が高密度で起こります。
3Dでは空間が広がった分、敵の密度やマップないのオブジェとあたる回数が大幅に下がり、2Dマリオの高密度なジャンプが不可能となっています。
マリオギャラクシーでは、重力が阻害要因となります。
星の形が複雑な分、それに合わせるとリアプノフ指数を変化させるものを控えめに提示せざる終えません。
曲がった星の水平線の向こう、視界をさえぎるものだらけのところを進んださきにいきなりリアプノフ指数を大幅増加させるものがあっては、理不尽な覚えゲームになってしまうからです。
実験
どうせゲームだし磁力の種類を増やしたり?
磁力の種類を増やしてみましょう。
これはそんなにとっぴなことではありません。
たとえば地形や星すべてが固定であり、地形の中にN極、車にS極が設定されてあれば、この磁力は見た目重力ゲームと変わりません。
ただ磁力ならNとN、NとS、SとNと作ることができ磁力は重力を拡張したものとみなせます。
磁力>重力の関係です。
それなら同じのりでゲーム用磁力>磁力>重力と拡張したものがあってもよいでしょう。
磁力を拡張してみましょう。
まず、NとSだけでは遠くの磁力がほかの地形に思わぬ影響を与えてしまいます。
それを避けるために、新しい磁力を導入するというのは楽しいことです。
N、Sとそっくりの効果で、N、Sとはまったく相互作用しない磁力を考えて見ます。
名前は何でもいいので適当にRとKとでもしておきましょう。
RとKは普通の磁力と同じです。
R=N
K=Sとにた作用をするとします。
車の磁力をR,K,N,Sを変化させることで密度の高い空間を作ることができます。
N,S、G、、、とN種類の磁力を考えて、N種類の引っ張りや反発や相互作用するしないの対応表を考えるのはとても楽しいことだと思います。
磁力の利き方が変わってもいいでしょう。
サイクロンのような螺旋がたの引力や逆サイクロンで反発したりする磁力や、力学系でいうサドル風の磁力。
志向性のある磁力などいろいろな磁力を考えることができると思います。
想像力しだいだと思います。
たとえばサドルタイプなら2次元空間で単純計算3種類、3次元空間なら4種類、向き次第でいろいろなものを作れます。
著作権情報
閲覧者数 -
今日の閲覧者数 -
このページは
画面上部に並んでいる、Wikiメニュー 編集 表示、、、
の中から編集を選び、「このページを編集」を選択してください。
それで編集可能になります。
一緒に創作してくださる方,イラストを画いてくれる方を募集しています。
創作後、末尾に著作者名を付加してください。
感想
画像著作権
最終更新:2018年02月22日 15:38