【cluster】射撃ワールド制作録 第2章 的の実装

https://note.com/galapa/n/n0b0983153f04
↑第1章 銃の実装および前文↑

 第1章で銃を撃つことはできましたが、第2章では弾を当てて楽しむための的を用意します。

第2章 第1節 基本の的

画像5

 このワールドの的は、撃たれたら「カキン」という音と共にぐねんぐねん動きます。
第2章ではこの的の仕組みを解説していきます。

スクリーンショット 2020-06-14 5.24.23

 的の階層構造は以下の通りです。

エンプティ↓
動かない土台,音源エンプティ,エフェクトエンプティ,倒れるアニメーションのルートエンプティ↓
的本体,棒

 このうちコライダーを持つのは的本体のみです。
大事なのは、これ以外にコライダーがあると、的じゃない部分を撃ったのに的に弾が当たった判定になってしまうことです。
 トリガーがコライダーを検出するのは、自身とその子階層らしいので、その辺りに注意を払えばOKかと思います。
念の為、階層には気をつけましょう。

スクリーンショット 2020-06-14 5.41.47

 ちょっと失敗だなーという手遅れは後述しますが、ここでは簡単に、倒れる根元に上記の「Set Animator Value Gimmick」を設定しましょうとだけ紹介しておきます。
 公式リファレンスは、的本体が回転するアニメーションを保持していましたが、ここでは起き上がりタイプの的であるため、起き上がりの起点となるルート(根元となるオブジェクト)が必要です。

 ちょっと待ってください、的の仕組みを設定したのが制作の最初期すぎて、なんでこいつはこのコンポーネントだけでギミックが動くのか憶い出せません。
あ、記憶が蘇りました。

 弾丸は何かに衝突すると、相手に「hit」という信号を与えます。
的はただそれを受信しているだけですね。
これも公式リファレンスそのままなので、初歩として的当てゲーム制作をご希望であれば、そちらの方を推奨いたします。

 弾が衝突した対象に信号を与える仕組みは汎用性が高いでしょう。
しかし的が倒れるためのトリガーが、ぶっ飛んできた弾以外に無いのは少し不自然になるかもしれません。
 アップデート前のステージではプレイヤーが歩いて届く場所に的が設置してありましたが、その際に銃でぶん殴っても的が倒れることはありませんでした。
どんな衝突にもヒット判定を設けたい場合は、弾から間接的にトリガーを受信するのではなく、自身に「On Collide Item Trigger」を設定するといいかもしれません。
 やっぱり公式リファレンスをそっくり真似するだけというのは、自分なりに応用した場合よりも記憶の風化が早いのかもしれません。

スクリーンショット 2020-06-14 5.48.45

 ヒット判定の信号を受け取った際に、設定されるアニメーション遷移です。
そしてやっぱり遷移の駄目な例ですね。
[Any State]が終了したらちゃんと待機状態のStateに帰してあげないと、無限ループするか、最後のキーフレームを維持してしまいます。

画像4

 サウンドやエフェクトのギミックも、プレハブ自身の「hit」信号によって引き起こされます。
エフェクトは、上の画像のようなアルファ抜きポリゴンを、スケールのキーフレームでビャッと拡縮させて、火花が飛び散るような効果を擬似的・原始的に再現しています。
 しかし発生位置が的の中心に固定されているので、かなり端っこに弾を当てても中央から出てきます。
今の所、衝突箇所を特定して何かを発生させる機構は無かったと思うので、これは自分なりに検討してみます。

 実はこのエフェクト、最初はちゃんと元気な姿を見せてくれていたのですが、記事執筆時点のワールドでは鳴りを潜めています。
なんかのはずみでギミックが機能しなくなっていたところ、影が薄かったのか、この記事を書くためにプレハブを開けるまで気付きませんでした。
ごめんやで。

 こぼれ話ついでに、このワールドの効果音はだいたい、自宅で適当な音を録音して加工したものです。
銃声は確か、クラフトボスの空ペットボトルをコツンとした音。
的への着弾音は、ハサミを鍋にぶつけた音です。
 録音といっても、スマホのボイスメモです。
そのうち、脇をキュッキュッてやる音とかレゴを踏みつけた踵の音とかを銃声に使う日が来るのかもしれません。

第2章 第2節 スライドする的

 第1節の的は、ただ棒立ちしていて、弾が当たったら倒れて起き上がるのみでした。

第2節では、するするとスライドする的を解説します。

画像6

 ただ突っ立っている的が並んでいてもつまらないので、左右にスライドする的をいくつか用意しました。

スクリーンショット 2020-06-18 3.13.25

 さっき失敗だなーと言ったのは、プレハブの構造です。
第1節で作成した的を、左右スライド用のエンプティでまた覆っています。
 しかも、スライド用のエンプティは位置情報のアニメーションを含むので、そのままワールドに配置して並べても、アニメーションの再生とともに並べられた位置ではなくアニメーションで設定した座標に強制巻き戻しされます。
それを防いで配置するために、さらに配置座標設定用のエンプティで覆っています。

 このあたり、最初にどういう標的を作って、どんな感じで遊んでもらうかをしっかり設計した上で制作すれば、もうちょっとスマートなプレハブを作れたはずだと思います。

 的の上にある番号や距離表示については、第3章のプレイアビリティの項目で述べます。

第2章 第3節 起き上がる的

画像8

 スライドする的に続いて、一定間隔で起き上がる的です。
これはアニメーター遷移のEntryから始まるDefault Stateにパタパタ起き上がるループアニメーションを設定し、Any Stateで呼び起こされる遷移に第1節のぐねぐねヒットアニメーションを設定しています。

スクリーンショット 2020-06-22 20.52.34

 アニメーターはこんな感じです。
ここでやっと、遷移の設定ミスに気付いてちゃんとしたものになっています。

 これによって、起き上がるアニメーションの途中で撃たれたらHITアニメーションに遷移し、HITアニメーションの再生が終われば起き上がるアニメーションに戻ります。

画像10

 こんな感じです。
全部に同じアニメーションを適用すると、同じタイミングで起き上がって同じタイミングでひっ倒れるので、バラバラにするついでに計6つの的それぞれに個性を持たせてみました。
そんな面倒くさいことせず、プレハブごとにアニメーションのオフセットなどができれば、いい感じに同じアニメーションでばらけてくれるかもしれません。
その辺りはまだ探れていません。

第3章 プレイアビリティについて

 第3章はプレイアビリティについてです。
こちらのリンクからどうぞ。

この記事が気に入ったらサポートをしてみませんか?