最近のアニマルメーカー開発 揺れものスクリプト
Added 2018-08-18 09:18:46 +0000 UTCまーたゲームの途中段階のexeを晒していきます。 ゲームづくりの苦しみを伝えたい。 見た目が少しずつマシに見えるように改善するのは当然として、 見た目的に「なんも変わってないように」見えても、実は裏では凄い大変なことをやってたりする。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 最近自分がやったことの中に「揺れもの」づくりってのがあります。 オブジェクトとして transformの中に入れていても、外側の揺れとは別に、ちゃんと揺れるような そういうスクリプトを作る必要がありました。 なぜそういう「揺れモノ」がほしかったのかというと、 やはり いつか、「ぼくらの」の戦闘のミニゲームを作りたいというのがあるからです。 ぼくらののバトルゲームを作りたい。 となると、絶対に必要なのが、「装甲」がどんどんリアルタイムに剥がれていく、という要素です。 で、それ自体はそんなに難しくないと思われる。 トリガーだけのコリジョン判定を持った装甲のオブジェクトを、大量に貼り付けていけば、それは出来ると思う。 でも、それだけだと面白くない。 自分としては、その一つ一つ貼り付けた装甲が、ぬいぐるみの踏み込み、振動にあわせて 個別に「揺れる」という表現をしたいと 思うようになったのです。 ぬいぐるみがズシーンと、一歩 歩く。 そのあとで、その衝撃の余波で 全身の各パーツが、ブラブラっと揺れていく。 ・・・ それが成功したとき、ものすごいリアルさ、重厚感が出ると思ったのです。 というわけで、個別の装甲それぞれにアタッチさせるためのスクリプトというのが絶対欲しいとなった。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー で、「ゆれる」スクリプトを作らないといけない。 これが とにかく 自分には難しかった。 「揺れるモノ」なんて、リジッドボディつけてジョイントすればいいと思われるかもしれないけど、 やっぱりそれでは駄目なんです。 こういう物理挙動を、自力で作る必要がある。 しかし、それにしても「揺れ」は難しい。 2Dの揺れなら簡単なんですよ、まだ。 軸が一本出し、固定だし。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー どうやって、揺れるスクリプトを作るか。 これもメチャクチャ悩んだ。 いろんな案が出た。 ・X軸、Z軸毎の、2つの軸と 角の速度の蓄積、揺れ戻しを計算してやる方法。 ・クオーターユニオンの蓄積、揺れ戻しをやる方法も考えました。 が、これもだめ。 クオーターユニオンの蓄積でやる方法を使うと、どうしても「ねじれ」が蓄積してしまう。 lookrotationの限界がここにある気がする。 角度が軸に近いとき、誤差がどんどん出てくる。 「勝手にモノを揺らしていくと、Y軸方向にねじれていく」 これはある意味リアルといえばリアルなのだが、やっぱ駄目。 リセットするタイミングもわからないし。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー ・・・ てかこうやって文章で伝えようとしても全く伝わらないし、意味不明だろうし、誤解しか生まれない気がする。 まぁとにかく、実際途中まで作ったやつを見てほしい。 build10の奴。 これは、「揺れの中心」という奴を可視化させています。 四角い白いキューブが、「揺れの中心」です。 これと、その方向を向くためのクオーターユニオン。 そしてその回転の「軸」 この「軸」を、赤い棒の向きで表現しています。 で、この棒の「向こう側」に キューブが行ったかどうか、で揺れの蓄積をマイナスにするかプラスにするかを判定して、 揺れの蓄積を計算していく。 これには外積を使う。 ・・・ そういうやり方で、揺れを表現できるか? とか思ったのです。 ・・・が、やっぱりこれもどこかうまくいかない。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー とかなんとか、ずーっっっと頑張ってて、試行錯誤してて、 まぁ最終的に これで揺れるようになったのです。 build11がそれです。 見やすい 揺れの確認方法ですが、 シフトキーを押して、「平行移動モード」にして、 その状態で方向キーを押して、前後左右にダッシュしてみてください。 平行移動ダッシュをすると、揺れのあり方というのが見やすくなります。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー とにかく、この揺れ表現が出来るようになったことで、 今までの「しっぽ」とか「ツインテ」とかの表現もマシになったのです。 どうマシになるのかというと、ジャンプしたときに、尻尾の先が下を向くのです。 空気抵抗を表現したように見えますね。 そのあとも反動で揺れ戻しが来る。 こういう「角度差」を、自動的に表現できるようになるということ。 アニマルメーカーがやってることは、すべてこういうことです。 動物のモーションとして、 何も考えない 何も用意しない。作らない。 自動的に「そのような動き」が 発生するようにする。 まぁそんな感じ。 揺れが末端に伝播していく、みたいなのはまだ表現できてません。 が、今回はもうこれで良いんです。 これで、ジ・アースの装甲が個別に揺れる、みたいなのがいつかできそう! と思えるようになりました。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 最後に、build12というやつが、最新の奴になります。 これもいろいろ変わってますよ。 カマキリを殴ると、尻尾や羽のリアクションがよくなってるのが分かると思います。 一番でかい変化が、武器が壁に突き刺さるようになったやつです。 こういうのも全部細かく解説していきたいけど。