VRChatで敵のHPと当たり判定を設定するチュートリアル
前記事
だんだんとVRChatというかUnityのチュートリアルになってる気がしますが、
VRChatにもっとRPGみたいなワールドが増えて欲しいので、今回は当たり判定とHPのチュートリアルを書きます。
まず、前回はかなり大雑把な当たり判定で、敵が怯んだり動いても同じ場所に当たり判定があったので
今回は当たり判定を頭部に移します。
まずは、頭部のボーンを選択し、そこに当たり判定用のコライダーを入れます。
当たり判定用のコライダーを入れたら、前回作った体全体の当たり判定用コライダーは消してしまい、そのコライダー用に作ったトリガーを新しい頭のコライダーに移し
不要になったトリガーは消しておいて下さい。
これで当たり判定は頭だけになり、青人形が頭の位置を動かすと、それに追従して当たり判定も移動します。
次に、ゲームっぽくするために敵に盾を持たせてみます。
適当な板を敵の右手のボーンの子にして持たせます。
ただ、このままだとアニメーションした時に盾がどうなるか分からないので、
上にある再生ボタンを押してアニメーションを確認します。
確認したら上の一時停止ボタンを押してちょうどいい位置に動かしますが、
再生中は数値の変更が反映されないので、トランスフォームの値をコピーして後で貼り付けます。
これでテストプレイをすると、敵が盾で弾をはじくようになり
後ろに回り込んで頭部を撃たなくてはならないので、(若干)ゲームっぽくなります。
次は敵のHPを設定していきます。
まず、前回作ったアニメーターに、新しく「Int」というものを追加し、
その「Int」の名前を「ダメージ」に変えます。
また、ノックダウン用のモーションも用意しておきます。
ノックダウン用モーションへの遷移条件を、「ダメージが9より大きい(9は含まない)」に設定します。
ただ、これだとひるみモーションとノックダウンモーションがごっちゃになってしまうので、ダメージが溜まったらひるみモーションをとらないようにします。
ひるみモーションへの遷移条件に「ダメージが10より小さい(10は含まない)」に設定します。
これで、ダメージが10を超えればひるみモーションを取ることなく、ノックダウンモーションへと遷移します。
あとは、頭部のコライダーのトリガーに「ダメージの数値を1足す」というのを追加すれば、弾が当たるたびにダメージが1ずつ蓄積されるようになります。
これでテストプレイをすると、9発までは耐えますが
10発目を当てるとダウンするようになります。
以上です。ではでは。
VRChatで棒に触ると反応して声を上げるモブを作るチュートリアル
タイトルがなんか変な感じがしますが、変な意図があるわけじゃなくてそのまま書いたらこうなっただけです。はい。
このチュートリアルは、下のチュートリアルの続きになっています。
このチュートリアルを始める前に、下のサイト等で
お気に入りのダメージボイスをダウンロードしておいて下さい。
それでは始めます。
まず、接触判定のある棒を作ります。
ただの棒にPickupをつけてもいいのですが、せっかくなのでGripを設定して、持ちやすいようにしています。
このあたりは銃でやったことと同じです。
棒のコライダーの「Is Trigger」のチェックを入れます。
これを入れるとコライダーがTrigger化し、イベントの起動等に使われるようになり、
物理演算の接触判定は消えます。
上の図では物理演算の接触判定が消えたことを「Is Kinematic」をオンにすることで対処してますが、キネマティックをオンにしたくない場合は、トリガー化してないコライダーをもう一つ別に用意して下さい。
これで棒の設定はできたので、青人形の設定に移ります。
青人形にトリガーを追加して、起動する条件を「OnEnterTrigger」にして下さい。
「OnEnterTrigger」にしたら、レイヤーの設定を「Pickup」に変えます。
これで、Pickupレイヤーのトリガー化されたコライダーと反応すると動作するようになりました。棒はPickupレイヤーなので、棒に触ると動作します。
あとは、Actionsに前回と同じようにやられトリガーを設定して下さい。
次はやられボイスの設定をします。
まず、「Play On Awake」をオンにしていると勝手に叫ぶので、オフにして下さい。
次に、人間の声は届く距離は(たぶん)10mくらいなので、「Max Distance」を10mに設定します。
これで10mより離れると声は聞こえなくなります。
声の設定をしたら、「Actions」に「AudioTrigger」を追加します。
これは文字通り、音声を再生するトリガーです。
Receiversには、音声ファイルではなく
オーディオソースを持ったオブジェクトをドラッグします。
これを銃と棒の両方のトリガーで同じ設定をすれば完了です。
これでテストプレイをすると以下のようになります。
— でゅら (@Dulla_vrc) August 10, 2018
これでチュートリアルは終了です。お疲れ様でした。
VRChatで弾が当たると反応するモブを作る
このチュートリアルは、上の3つのチュートリアルの続きになっています。
上の3つのチュートリアルで既に説明した部分は省略しています。
Fighting Motions Vol.1 - Asset Store
このチュートリアルを始める前に、この無料アセットをインポートしておいて下さい。
戦闘用のモーション集です。
まず、前回のチュートリアルで作成した青人形に、アニメーションコントローラーを追加していきます。
アニメーションコントローラーを追加したら、それをダブルクリックしてアニメータータブを開き、そこに待機モーションをドラッグします。
待機モーションをドラッグしたら、次はやられモーションをドラッグします。
この時、「Entry」が「待機モーション」に繋がっているようにして下さい。
置いたモーションの上で右クリックを押すと「MakeTransition」というのが出るので、それで待機とやられのモーションを相互に繋いでいきます。
左上のParametesタブから、「+」のマークを押して「Trigger」を追加します。
(「+」のマークに赤丸をつけるの忘れてましたが、そこを押してください)
そうすると新しいトリガーが追加されるので、「やられ」と名前を付けておいて下さい。
次に待機モーションからやられモーションへの変化を設定します。
中央の「Has Exit Time」にチェックが入っていると、待機モーションが一区切りついてからやられモーションに移行するのでタイミングが変になってしまいます。
なのでオフにしておいて下さい。
下の「conditions」の+を押して、「やられトリガー」を設定します。
これで、「やられトリガーが発動するとやられモーションへと移行する」という設定になります。
アニメーターのトリガーは「自動でOFFになる」性質を持っているので、戻りは特に設定しなくてOKです。
「Has Exit Time」のチェックさえ入っていれば、やられモーション終了と同時に、自動で待機モーションへと戻ります。
これで、「やられトリガーが起動するとやられモーションをとる」というものを設定できたので、あとはそのトリガーを起動する準備をするだけです。
まず、青人形に当たり判定を追加します。
青人形の身長が1.8mくらいで、Unityの数字が1=1mで設定されているので
それをイメージすると数値の設定がやりやすいです。
重さを気にしなければ、メッシュコライダー等でも大丈夫だと思います。
当たり判定を設定したら、前回の的と同じようにトリガーをオンパーティクルに設定して
アクションを「Animation Trigger」に設定します。
「Animation Trigger」に設定したら、アニメーターを持ったオブジェクト(青人形)をドラッグして
「Trigger」の項目に「やられ」と記入します。
これで、「パーティクルが当たるとやられのアニメータートリガーが起動する」となり、やられのアニメータートリガーが起動するので青人形は撃たれるとやられモーションをとるようになります。
テストプレイをして、銃で撃つと反応するようになっていれば成功です。
以上です。お疲れ様でした。
次は棒で殴れるようにしたり、やられボイスも追加してみたいと思います。
VRChatのワールドでパーティクルを射出する銃を作るチュートリアル(的、アバターのコライダー編)
前回のチュートリアルで弾が出るようになったので、
今回はその弾が的に当たるようにしていきます。
まず、適当な的を配置して、VRC_Trrigerの「OnParticleCollision」を追加します。
これでパーティクルのコライダーが当たるとイベントが発生するようになります。
弾が当たったら的の色が変わるようにしてみます。
これで、弾が当たると的の色が赤に変わります。
ただ、これだとずっと赤なので、自動的に別な色に変わるようにします。
設定を右クリックでコピペして
「弾があたってから1秒後に」色がグレーに変わるように設定します。
これで、弾が当たった時に1秒だけ赤くなる的になります。
テストプレイをしてみます。
最初は白です。
弾が当たると1秒だけ赤くなり
1秒後はグレーになり、もう一度弾を当てるとまた1秒だけ的が赤くなります。
これで的の作り方は終了です。
また、余談ですがこの的は「アバターが出したパーティクル」にも反応します。
アバターのパーティクルの設定を上記の赤枠のようにすれば、例えば「自分のアバターに仕込んだ銃」等でも的のトリガーを反応させることができます。
銃を作らなくても、この設定の的だけ大量に用意すれば、自分のアバターのパーティクルだけで遊べたりします。
ではでは
これで銃を作るチュートリアルを終わります。
VRChatのワールドでパーティクルを射出する銃を作るチュートリアル(弾の発射編)
前回持てるようにした銃に、パーティクルを追加していきます。
パーティクルを追加したら、とりあえず「PlayOnAwake」をオフにして下さい。
これがONだと弾が勝手に発射されます。
パーティクルに関しては、ここでは詳しく解説しないので
簡単にセミオート銃の設定をしていきます。
何をしているかと言うと、「1秒間に19発出るように設定して、発射時間を0.1秒」にしています。これで一回押すと弾が一発出る銃ができます。(10発ではなく19発なのは、10発だとラグがあると弾が出ないからです)
LoopingをONにするとフルオートになったり、Shapeを設定してRate over Timeを200にするとショットガンになったりするので、色々試してみて下さい。
それだけだとちょっと地味なので、弾にTrailを追加します。
これを上の図のように設定すると弾道が見えるようになります。
これを調整すると曳光弾も作れます。
次にコリジョンを設定していきます。
これの設定を間違うとトリガーが反応しないので気をつけてください。
画面を見つつ、大きさなどを設定して下さい。
中央の「ColiderWith」は「どのレイヤーにコライダーが当たるか」を設定することができて、初期状態だと銃本体に当たって弾が出なくなるので、銃(pickupレイヤー)に当たらないように設定します。
一番下の「SendCollisionMessages」を設定しないと、弾が当たっても的に情報を伝えることができないので、ONにして下さい。
これで弾の設定ができたので、引き金を引いたら弾が出るようにします。
銃本体にTriggerを追加していきます。
「手に持った状態で引き金を引いたら」
「パーティクルのスイッチを操作する」ようにします。
操作されるパーティクルを選択します。
先ほど作ったパーティクルをドラッグして、
発射するので設定を「True」に変えてください。
これでテストプレイすればこのように弾が出るはずです。
これで弾の発射編は終わりです。次回は的を作ります。
ですがその前に
前回オブジェクトシンクを付け忘れていたので、銃に追加します。
これが無いと他のプレイヤーと位置が同期しません。
以上です。
VRChatのワールドでパーティクルを射出する銃を作るチュートリアル(下準備、銃のPickup設定編)
VRChatにもっと射撃場ワールドが増えて欲しかったのでこのチュートリアルを作りました。自分も初めて作ったものをチュートリアルにしているので、もっといい方法があるかもしれませんが何かの参考になればと。
まず、VRCSDKを入れて、とりあえず床(Plane)を配置します。
そこに、後で(的として)使うのと、アバターの大きさ参考用に
VRCSDKに入っている青い男を置いておきます。
次に、ピックアップ用レイヤーを作る準備として、SDKのプレハブから
「VRCWorld」をドラッグしてSceneに入れます。
この「Setup Layers」というのを押すと、レイヤーが自動的にVRC用に設定されます。
この作業を最初にやっておくと、後でレイヤーを設定し直す手間が省けます。
レイヤーを設定したら、Cubeを配置して、青い男の大きさを見つつ
手に持ちやすいくらいの大きさと高さに設定します。
Cubeを置いたら、「Add Component」から「VRC_Pickup」を追加して下さい。
「VRC_Pickup」を追加すると、自動的にCubeのレイヤーが「Pickup」に設定されます。
レイヤーの説明は長くなるので省きますが、Pickupレイヤーはプレイヤーにぶつからないので、掴むオブジェクトに向いています。
中央の「IsKinematic」のチェックを押すと空中に静止します。
これは趣味の問題ですが、自分は落とした時に拾うのが面倒なのでこの設定を使っています。
次に「AutoHold」を「Yes」にします。
これが無いと引き金を引けません。
次に「銃を持つ位置」を設定します。
上の図のようにやって、Cubeの子に空のゲームオブジェクトを配置して下さい。
これが後に「銃を持つ位置」になります。
そのままだと変な角度に持たれてしまうので、ゲームオブジェクトの角度を上のように設定します。
このあたりの角度についてはこちらで詳しく解説されています。
ゲームオブジェクトの設定をしたら、そのゲームオブジェクトを「ExactGun」にドラッグして
「Orientation」を「Gun」に設定します。
この状態で起動すれば、Cubeを銃のように持てるはずです(立方体なので良くわからないですが)
これで下準備編は終わりです。次は弾が出るようにしていきます。