[VRC]ペッパーボックス拳銃(COP. 357)を利用した残弾が減っていく アバター用残弾システム解説
1.始めに
こんにちは、T.D.200です。残弾システムがVRCのTwitter界隈で流行してると勝手に判断して「世界的ですもんね 乗るしかない、このビッグウェーブに」と思い絶対誰も解説しないリボルバー残弾システムの書置きしておこうかなと思いましたがペッパーボックス型の方が珍しそうで説明がリボルバーと比べて4手順ぐらい楽だったので最初の説明には良いと思い途中からこちらにしました。メモ程度なので参考になれば幸いです。(リボルバー型は途中で投げ出した「カメラとレンダーテクスチャを利用した望遠鏡」の記事が終わり次第記しておきます。)
Write DefaultsONで作成しているため不具合不利益が起こる可能性があります。
この記事を応用すれば他の銃のシステムにも使えます。
※アバターに小物を持たせてアニメーションでON OFFにしたりパーティクルを出したり出来る事が前提です。小物の出し方が分からない又はアニメーションクリップの作成がわからない方はこちらを参考までにどうぞ..
2.用意するもの
・銃のモデル
・unity2019
・最新のVRCSDK
・やる気
3.仕組み説明
私が普段使用している残弾システムはAnimation Stateの推移でアニメーションを再生して残弾が減っているように見せています。そしてリロードした時以外にも銃を収納すると残弾が完全に装填されるようにしています。
※ 3.仕組み説明 で使用する写真は全てCOP. 357 で使用した残弾システムです。
↑全体
1. Stateごとに再生されるアニメーション説明(推移ごとに説明が入ってるので長いです)
↑汚くてすみません..
※銃自体は通常は格納していますが残弾数の説明のためにONにしています。
①何も入れてないです
②一発目を撃つアニメーションが再生されます。
③1発目を射撃した後の待機状態が再生されます
④二発目を撃つアニメーションが入っています。
⑤二発目を射撃した後の待機状態が再生されます
⑥三発目を撃つアニメーションが再生されます。
⑦三発目を射撃した後の待機状態が再生されます
⑧四発目を撃つアニメーションが再生されます。
⑨四発目を射撃した後(弾切れ)の待機状態が再生されます
⑩カラ撃ちのアニメーションが再生されます
↑引き金が動くのとカラ撃ちの音が鳴ります
⑪リロードのアニメーションが再生されます
⑫EXITに導く時に分かりやすくするためのものなのでアニメーションは再生されないです。
2.どの様な parameter を基本的に使用しているか
・GestureRight (今回はこちらを使用します)
または
・GestureLeft
・道具を取り出すparameter (今回は「道具持ち替え」というparameterです)
最低限の場合はこれでOKです。
・Safety用のBoolのパラメーター
・selector用のBoolのパラメーター
などがあると機能を増やす事も可能です。
3.どのような時にステートを推移させているか
今回は「GestureRight」 =1 =5 NOT=1 NOT=5
※fistとRock 'n' roll
と「道具持ち替え」=47
※ 「道具持ち替え」(47)で銃(COP. 357)が出ます
を使用します。
①
↑アバターを読み込んだ直後です。道具を出していないので推移しないようになっています。(EXITに推移している。)
②
↑道具を出さない限りGestureRight=1になっても推移しないようにしています
③
↑条件が揃う(道具を出しfistにする)と推移して射撃アニメーションが再生される)
④
↑GestureRight→NOT=1(fistではなくなると)推移します。
ここで分岐ができるようになります。(2発目射撃待機~最終弾射撃待機 まで)
・銃を収納した場合
↑銃をしまうと強制的にEXITに推移します。(「道具持ち替え」がNOT=47になるので)
・射撃した場合
↑ジェスチャーをfist(GestureRight=1)にすると次にの射撃アニメーションに推移します。
・リロードした場合
↑ジェスチャーをRock 'n' roll((GestureRight=5)にするとリロードアニメーションに推移します。
↑ちなみに次にジェスチャーをRock 'n' rollではなく(GestureRight→NOT=5)すると初期状態に推移します。
※↓ここから説明のために右に寄せます。
⑤残弾0状態の場合
↑残弾が0になり待機している状態(ほとんどの自動式拳銃ならスライドが後退してロックがかかっている状態)
ここでも分岐があります
・銃を収納した場合
↑さっきと同じで銃をしまうと強制的にEXITに推移します。(「道具持ち替え」がNOT=47になるので)
・カラ撃ちした場合(銃によっては動作は変わる)
↑ジェスチャーをfist(GestureRight=1)にするとカラ撃ちアニメーションに推移します。
↑GestureRight→NOT=1(fistではなくなると)打ち切りの待機状態に推移して戻ります。
・リロードした場合
↑ジェスチャーをRock 'n' roll((GestureRight=5)にするとリロードアニメーションに推移します。
↑さっきと同じでジェスチャーをRock 'n' rollではなく(GestureRight→NOT=5)すると初期状態に推移します。
解説はここでお終いです。お疲れ様でした。
後書き
残弾システム楽しいので是非作ってみてくださいね。
感想や指摘があれば書いていただけると幸いです。
お知らせ:現在Avatar Parameter Driverを使用した残弾システム製作中です。そのうち記事にすると思うので良かったらみてください!