この記事ではUnityのラグドールのシステムと、STYLYが提供するインタラクションSDKを組み合わせて、武器で敵を倒すシステムを作ります。
Unity等で使用されるHumanoidのキャラクター / アバターを用意し、無料のアセットを使うことで簡単に実装することができます。
初心者でも簡単なアクションゲームやバトルゲームを作ることができます!
ゲーム作りの参考にしましょう!
今回はSTYLYが提供するインタラクションSDKを使用します。あらかじめ以下のマニュアルに目を通しておくと、理解を深められます。
サンプル
今回のラグドールとインタラクションSDKを使った、敵を倒すサンプルシーンが以下になります。
体験してみましょう。
キャラクターの準備
Unityで使用するキャラクターの準備をしましょう。今回はAdobeが提供する3Dキャラクター・アニメーション制作ツール「mixamo」を使用します。
mixamoにアクセスしましょう。
mixamo : https://www.mixamo.com/#/
mixamoを初めて使う方は以下の記事を参考にしましょう。
mixamoでキャラクターと、簡単なアニメーションを用意します。
今回は、この強そうな敵キャラクターを選びました。
この敵キャラクターにアニメーションを付けます。任意で選んで大丈夫ですが、今回は「Taunt」を選びました。
FBX for Unityの形式でダウンロードし、Unityのプロジェクト内にインポートしましょう。
![img_5f8d147a5ca50 - STYLY](http://styly.cc/wp-content/uploads/2020/10/img_5f8d147a5ca50.png)
インポート
キャラクターアセットはFBXデータとなっていて、キャラクターの名前は「Skeletonzombie T Avelange」、アニメーションは「Taunt」となっています。
インポートが完了したら、マテリアルとリグを調整します。
キャラクターのデータを選択した状態で、インスペクターウィンドウの「Materials」タブを選択します。
Locationの項目を「Use Embedded Materials」から「Use External Materials(Legacy)」を選択します。
![img_5f8d14a8aa389 - STYLY](http://styly.cc/wp-content/uploads/2020/10/img_5f8d14a8aa389.png)
Legacyを選択
すると、適切なマテリアルがアタッチされます。
![img_5f8d14fec858f - STYLY](http://styly.cc/wp-content/uploads/2020/10/img_5f8d14fec858f.png)
Material
次にリグを調整しましょう。同じようにインスペクターウィンドウの「Rig」タブを選択します。
Avatar TypeのGenericをHumanoidに選択します。
![img_5f8d2093c4110 - STYLY](https://styly.cc/wp-content/uploads/2020/10/img_5f8d2093c4110.png)
Humanoid
これでHumanoidタイプに変更できました。
次にアニメーションの準備をします。アニメーターを用意しましょう。
プロジェクトウィンドウ内のAssetsフォルダ上で右クリックをし、Create > Animator Controllerを選択します。
![img_5f8d15b301341 - STYLY](https://styly.cc/wp-content/uploads/2020/10/img_5f8d15b301341.png)
Animator Controller
名前をEnemyAnimatorとします。
![img_5f8d15dad744c - STYLY](https://styly.cc/wp-content/uploads/2020/10/img_5f8d15dad744c.png)
EnemyAnimator
「skeletonzombie_t_avelange@Taunt」のFBXファイルを選択し、アニメーションファイルを表示します。
![img_5f8d1604d2f5a - STYLY](https://styly.cc/wp-content/uploads/2020/10/img_5f8d1604d2f5a.png)
Animation
Tauntのアニメーションファイルを選択し、コピー&ペーストまたは[Ctrl+D]で、複製しましょう。
![img_5f8d166fc5049 - STYLY](https://styly.cc/wp-content/uploads/2020/10/img_5f8d166fc5049.png)
複製
複製したTauntのアニメーションファイルを選択し、インスペクターウィンドウの「Loop Time」にチェックを入れます。
![img_5f8d19bfd6fbb - STYLY](https://styly.cc/wp-content/uploads/2020/10/img_5f8d19bfd6fbb.png)
Loop Time
EnemyAnimatorをダブルクリックし、アニメーターウィンドウを表示します。
![img_5f8d16c8d4142 - STYLY](http://styly.cc/wp-content/uploads/2020/10/img_5f8d16c8d4142.png)
アニメーターウィンドウ
Tauntのアニメーションファイルをアニメーターウィンドウにドラッグ&ドロップしましょう。
アニメーターファイルをヒエラルキーウィンドウの「skeletonzombie_t_avelange@Taunt」オブジェクトにドラッグ&ドロップします。
すると以下のようにインスペクターウィンドウにアニメーターコンポーネントが追加されます。
![img_5f8d1a2b4727b - STYLY](http://styly.cc/wp-content/uploads/2020/10/img_5f8d1a2b4727b.png)
Animator Component
この状態で一旦再生してみましょう。
アニメーションが再生され、ループします。
これでキャラクターの準備は完了です。
Ragdollの準備
次にキャラクターが倒れたときに、人のように、倒れた挙動を表現する「Ragdoll」を準備します。
そもそもRagdollとは、コライダー等の物理演算を利用して、挙動を表現することです。
今回のRagdollの設定には、Unity Assets Storeの「Ragdoll Helper」を使用します。
Ragdoll HelperはHumanoidタイプのアバターをRagdollに変換してくれる便利なアセットです。
アセットストアからダウンロードし、プロジェクト内にインポートしましょう。
![img_5f8d1ca0a911e - STYLY](http://styly.cc/wp-content/uploads/2020/10/img_5f8d1ca0a911e.png)
Ragdoll helper
インポートが完了したら、上部メニューバーの「Window > BzSoft > Ragdoll Helper」
![img_5f8d1cf07af8b - STYLY](http://styly.cc/wp-content/uploads/2020/10/img_5f8d1cf07af8b.png)
Ragdoll helper
ウィンドウを開いたら、シーン上のSkeletonzombieオブジェクトを選択します。
すると、Ragdoll Helperウィンドウが以下のようになります。
ウィンドウの一番上の「Ragdoll」を選択した状態でCreateを選択しましょう。
すると、体にそってColliderがアタッチされます。
以下のようになります。
![img_5f8d27fd53817 - STYLY](https://styly.cc/wp-content/uploads/2020/10/img_5f8d27fd53817.png)
Collider
Ragdollの準備ができました。
キャラクターが倒れたとき、地面につくように地面のオブジェクトを用意します。
ヒエラルキーウィンドウからCubeを作成します。Create > Cubeを選びます。
名前をFloorにし、Transformを以下のようにします。
![img_5f8d28a8151b0 - STYLY](https://styly.cc/wp-content/uploads/2020/10/img_5f8d28a8151b0.png)
Transform
キャラクターのオブジェクトのTransformも設定しましょう。以下のようにします。
![img_5f8d29f978717 - STYLY](https://styly.cc/wp-content/uploads/2020/10/img_5f8d29f978717.png)
Transform
このようになりました。
![img_5f91349dc9040 - STYLY](https://styly.cc/wp-content/uploads/2020/10/img_5f91349dc9040.png)
綺麗に表示される
最後に武器の当たり判定をつけるためのコライダーの設定をします。
Ragdollのコライダーとは別で、新規でCapsuleをシーン内に追加します。ヒエラルキーウィンドウから、Create > Capsuleで追加しましょう。
名前を「Collider Object」とし、Transformを以下のようにします。
![img_5f91398ac1117 - STYLY](https://styly.cc/wp-content/uploads/2020/10/img_5f91398ac1117.png)
Transform
Collider Objectを敵キャラクターの子オブジェクトとします。
![img_5f913a3970c38 - STYLY](https://styly.cc/wp-content/uploads/2020/10/img_5f913a3970c38.png)
子オブジェクト
すると、以下のようになりました。
![img_5f913a725b08f - STYLY](https://styly.cc/wp-content/uploads/2020/10/img_5f913a725b08f.png)
Collider Object
このままではメッシュが表示されてしまうため、メッシュを非表示にしましょう。
Collider Objectを選択し、インスペクターウィンドウから、Mesh Rendererのチェックマークを外します。
![img_5f913ab6c4057 - STYLY](https://styly.cc/wp-content/uploads/2020/10/img_5f913ab6c4057.png)
Mesh Renderer
すると、シーン上にはColliderだけが表示されます。
![img_5f913acfbe733 - STYLY](https://styly.cc/wp-content/uploads/2020/10/img_5f913acfbe733.png)
Meshが表示されなくなる
Ragdollの準備は完了です。
武器の用意
次に武器の用意をしましょう。
アセットストアから武器を用意するのでも大丈夫ですが、今回は一番シンプルにCreateからCubeで簡単な棒状の武器を用意します。
Create > Cube でCubeを用意します。
名前を「Weapon」とし、Transformを画像のようにします。
![img_5f9135e26c83d - STYLY](https://styly.cc/wp-content/uploads/2020/10/img_5f9135e26c83d.png)
Transform
画像のようになります。
![img_5f91362bcd595 - STYLY](https://styly.cc/wp-content/uploads/2020/10/img_5f91362bcd595.png)
武器
Add ComponentからRigidbodyをアタッチしましょう。
以下のように設定します。
![img_5f962da226baa - STYLY](https://styly.cc/wp-content/uploads/2020/10/img_5f962da226baa.png)
Rigidbody
これで全てのオブジェクトの準備ができました。
最後にインタラクションSDKの設定をします。
インタラクションSDKの設定
最後にインタラクションSDKの設定をします。
最初に武器のインタラクションSDKを設定します。先ほど作成したWeaponに「STYLY_Attr_Breaker」と「STYLY_Attr_Draggable」をアタッチします。
STYLY_Attr_Breakerは「STYLY_Attr_Breakableコンポーネントが追加されているオブジェクトを破壊する」スクリプトです。
STYLY_Attr_Draggableは、「オブジェクトをポインターでつかめるようになる」スクリプトです。
これで、Weaponオブジェクトをつかんで動かせるようになり、STYLY_Attr_Breakableを破壊することができるようになりました。
次に、敵キャラクターのアニメーターが無効になる設定をします。
Collider Objectを選択し、Add ComponentからインタラクションSDKのSTYLY_Attr_Breakableをアタッチします。
STYLY_Attr_Breakableは、「STYLY_Attr_Breakerコンポーネントが追加されているオブジェクトに破壊される」スクリプトです。STYLY_Attr_BreakerとSTYLY_Attr_Breakableはセットで使います。
Breakableによって、Collider Objectが破壊され、「On Destroy Event」によって、敵キャラクターのAnimator.enabledをfalseにします。
On Destroy EventのListを追加します。
右下の[+]ボタンを押して、Listを追加します。
None (Object)の欄に、skeletonzombie_t_avelange@Tauntオブジェクトをドラッグ&ドロップします。
No Functionの欄はbool enabledを選びます。
![img_5f9625ed430fb - STYLY](https://styly.cc/wp-content/uploads/2020/10/img_5f9625ed430fb.png)
bool enabled
画像のように設定ができたら完了です。
![img_5f9627b42e06b - STYLY](http://styly.cc/wp-content/uploads/2020/10/img_5f9627b42e06b.png)
完了
再生して確認
シーンをUnity上で再生し、確認してみましょう。
武器をドラッグし、敵にぶつけてみましょう。
敵を倒せました!これで完成です。
STYLYへアップロード
STYLYへアップロードしましょう。今回はシーンでアップロードします。
シーンのサイズが大きくてSTYLYにアップロードできない場合は、こちらの記事をご参照ください。
作成したタイムラインのシーンをSTYLYにアップロードしてみましょう。
アカウント作成方法
UnityからSTYLYにプレハブをアップロードする方法
未経験から VR/AR コンテンツ制作を学ぼう
VR/ARコンテンツ制作に必要なUnity・PlayMakerを基礎から応用まで学べ、STYLYで配信されている魅力的なコンテンツの制作過程(制作技術も公開します)を学べる オンライン学習サイト NEWVIEW SCHOOL ONLINE 開講中!!
- プログラミングコードをかかず、VR/ARコンテンツを制作可能
- 公式監修によるUnity講座を用意
- フォトグラメトリ制作方法、コンテンツ軽量化などの追加要素あり
- VR/ARコンテンツを作るための考え方を学習できる