ABSで始めるVRC改変ライフ 基礎編(遠距離攻撃の実装)

はじめに

ABSで実際に戦ってる場面の見学はされましたでしょうか?
現状のバトルはかなり派手だったかと思います、派手なのをやってみたいと思った方もこりゃついていけそうにないと思った方もいるかと思います。

現在のレギュレーションは攻撃は初見以外で回避する余地があるものにする、完全無敵状態にはしないの2点くらいなのでレギュレーションの回避する余地部分の解釈次第で結構フリーダムです。

しかし、派手で範囲が強い攻撃が強いかと言うと意外とそうでもない一面があり、攻撃性能に関してはこの後解説する連射できる遠距離攻撃を実装すれば調整次第で対単体に関しては上位の性能になるかと思います。

実装の前に

 遠距離攻撃する武器やパーティクルを選んでおきましょう、シンプルなものだと銃や弓、凝ったものだと魔法や武器のイメージがなければ手のひらからエネルギー弾を発射する等。
ABSではパーティクルと当たり判定は関係がない為本来はパーティクル無しでも実装はできますが不可視の攻撃は回避不能のためレギュレーション違反となります、ビームや弾丸、最も用意しやすいものとしてはunityで作成できるcubeやsphereでも構いません。

個人的には無料のこのパーティクルをありがたく使わせていただいています。


実装方法

一番シンプルな遠距離攻撃の実装はこの二つの動画を参考にして下さい。
writedefasultsに関しては自分の設定に!



攻撃のパーティクルを用意した場合は2種類の設定方法があります

1.パーティクルに合わせてあたり判定を移動させる方法

上のどちらかの設定を完了させる
1.Hierarchyでアバターに入っているGameObjectを選択
2.ctrl+6でanimation画面を開き対象のAnimationを選択
3.録画ボタンを押し弾丸のonと同時にパーティクルをon
4.パーティクルを選択
5.Playback Timeに見たい秒数の数字を入れる、今回は0.5秒後
6.5で入れた数字に0.6をかけてフレーム数にし(今回は0.3)、そのフレームに録画を合わ せる(下のAnimatio画面は秒単位ではなく1秒あたり60フレームのフレーム単位の為)
7.Scene画面のパーティクルの位置にContactSenderの入っているobjectを合 わせる、この時ツールバーの下の部分(↑7)をLocalに変えると動かしやすい

8.Animationの最後のフレームにパーティクルのOffを録画して完成
こちらの場合パーティクルに合わせて速度などを合わせないといけない為加速していく弾などは若干合わせにくくなります。
またAnimationの数値は徐々に加速して徐々に減速するのがデフォルトになっている為(Animationの下のCurvesを押すと下記画像の画面が開きます)

始点を右クリックしてRight Tangent選びLiner
終点も右クリックしてLeft Tangentを選びLinerに設定するとシンプルな加速になって合わせやすくなるかと思います。

2.パーティクルの速度を0にして当たり判定と一緒に飛ばす方法

1.使用するパーティクルの弾丸部分のStartSpeedを0にする

2.パーティクルの子にContactSenderを入れる
3.Hierarchyでアバターに入っているGameObjectを選択
4.ctrl+6でanimation画面を開き対象のAnimationを選択
5.録画ボタンを押しパーティクルをon
6.0.5~1秒程度すすみパーティクルの位置を動かす

こちらの方法の方が設定が楽で速度もコントロールできますがパーティクルによってはStartSpeedを0にしても移動するもの等がありパーティクルの理解が必要になる事がある。

連射武器

上で紹介した二つの動画では単発式ですが、VRCはラグがつきもので0.2~0.8秒程度の遅延が常にあるためラグを考慮して0.2~0.8秒後に相手がいる位置を撃たないと全く当たりません、これを単発で行うのはなかなかに難しい為、連射できるように変更します。

これにも2種類の方法がありパーティクル等によって使い分けるといいかと思います。

1.ContactSenderを移動させる上の動画のAnimationをループさせる方法(単発を連射させる物向き)

1.武器の子にContactSenderを作成(上で作ったものを利用しても可)
2.ctrl+Dで5個程度複製
3.Animationを録画できる状態にする
4.単発と同じようにAnimationを作成する
5.1個目を選択してCtrl+C

6.2個目を選択してCtrl+V

7.これを複製した個数分行い、さらにスタートのタイミングを10フレームずらす


2.ContactSenderをいくつか進行方向に並べてOnOffを繰り返すAnimationをループさせる方法(マシンガンやビームなどの射線上に常に当たり判定がある物向き)

1.武器の子にContactSenderを作成しHeightに6を入力し他の設定をする

2.ctrl+Dで3個程度複製して1の子にする
3.進行方向に並べる

4.Animationを録画できる状態にする
5.9フレーム目にContactSenderをOff、10フレーム目にOnを繰り返す
(9フレーム目10フレーム目の2個を選択してCtrl+C、Ctrl+Vで縦線の位置にペーストされるのでこれを使うと楽)


武器の制御に関して

 今回つくった射撃武器と近接武器を同じ手で使う場合、切り替えが必要になるかと思います(装備が重なっても気にならないなら必要ありません)
これに関しては今回は銃を出すジェスチャーをしたら剣をしまうanimationを組んで対応しましょう。
いきなり武器が出現したり消えたりするのでわりと不自然になるかと思います、これに関しては後日公開の応用編で対応方法を紹介予定です。

まとめ

 今回の記事で遠距離武器をつけれたならもう参戦準備は完了です、練習場に来て乱戦とよばれる試合形式に参加してみてください。
乱戦は参戦ハードルが低くなにかおかしいところがあれば途中で抜けてしまってもあまり問題がありません。もちろんできる限りの動作確認はするべきですがどんなに動作確認しても割と抜けがあるものです。

boothにはこんな商品もあるので活用してみるのもいいかと思います。


用語解説

ContactSender

Hierarchyにあるobjectを選択してInspectorのAdd componentを押しvrcとかsenderで検索して追加できるcomponent
これのCollision Tags(画像の1)に攻撃力の専用タグを設定し相手のContactReceiverに接触させることでダメージになる。
このコンポーネントを付けるときは何かに付けるのではなく新しくGameObjectを作りそこにAdd Componentで付けることを推奨
ContactSenderのコンポーネントを切っても(画像の2)当たり判定は消えないので、On Offするときは大本のObjectのOn Off(画像の3)が必要な為

Has Exit Time

1をチェックして2に1~0の数値を入力すると入力した数値(1なら100%、0.1なら10%)分矢印の元のAnimationが再生されないと遷移しない設定。
これをOnにしておけば3のConditionsが空でも指定のAnimationの%再生した時点で遷移する。
これを応用することでクールタイムや溜めモーションをしないと出ない攻撃等を実装できる(応用編で解説)

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