Friday, November 30, 2018

Amazon Lumberyard学習メモ:コリジョンが付いたオブジェクトを作成する

前々回のキャラクター改修でアクターにフィジックスを適用したので、今回はそれを利用し、キャラクターがインタラクト出来るオブジェクトを作ってみます。

参考資料:Amazon Lumberyardユーザーガイド

まずオブジェクトの準備です。必要なのは表示オブジェクトとコリジョンオブジェクトです。

上図のオブジェクトは階段として使います。

この二つのオブジェクトを一つのMayaシーンに入れ、コリジョンオブジェクトの方には「_phys」というサフィックスを付けます。(下図のOutlinerの表示を参照して下さい。)

この様に「_phys」というサフィックスが付いているオブジェクトはLumberyardに持ち込んだ時に自動でコリジョンとして扱われる様になります。

このMayaシーンをExport - AllでFBXとしてエクスポートします。
エクスポートしたFBXファイルは、今まで同様にStarterGameの下に作ったフォルダに移動させました。

続いてLumberyardでの作業です。
新規にEntityを作成し、Add Componentで以下のコンポーネントを追加します。
・Mesh
・Mesh Collider
・Static Physics
Meshコンポーネントには先ほどのFBXをロードします。

とりあえずこれでコリジョン付きオブジェクトとして作動する様になります。

今回はもう一つオブジェクトを用意しました。こちらはキャラクターを衝突させて動かすテストに使います。


こちらの為のEntityには以下のコンポーネントを追加します。
・Mesh
・Mesh Collider
・Rigid Body Physics
先ほどのオブジェクトに使ったStatic Physicsコンポーネントと違い、Rigid Body Physicsコンポーネントを使うと動かせるオブジェクトが作れます。
ただ、余りにオブジェクトが重いとキャラクターが衝突しても動かないので、「Density (Kg / Cubic meter)」の値を小さくしておきます。今回は5.0に設定しました。


次にマテリアルとテクスチャーの設定です。
基本的には以前の記事と同じですが、今回のオブジェクトにはコリジョンオブジェクト用のマテリアルも付いていますので、最初に表示オブジェクト用のマテリアルの方をクリックしてから作業を行います。


通常通り、各テクスチャーをスロットにロードし、Diffuse Color(Tint)・Specular Color・Smoothnessの各値を255に設定します。


出来上がったオブジェクトをレベルに配置してみました。


Play Gameでテストしてみます。

階段を降りてキューブに衝突し倒す事が出来ました。

コリジョンを表示して確認したい場合は以下の様にします。
まずTools - Consoleでコンソールを表示します。


次にコンソールの左下にある(x)アイコンをクリックします。


Console Variablesが表示されるので、「p_draw_helpers」の値を1にします。


コリジョンが表示されます。

「p_draw_helpers」の値を0にすると非表示に戻ります。

オブジェクトデータ上でコリジョンを確認するには以下の様にします。
まずTools - Asset Browserでアセットブラウザーを表示します。


オブジェクトを選び、マウス右ボタンで出るメニューからEdit Settings...を実行します。


Modifiersの中のCryPhysicsProxyのPhysics meshesの右端のアイコンをクリックします。


「_phys」というサフィックスが付いているオブジェクトにチェックが入っているのが確認出来ます。


確認が終わったらCancelで戻ってください。

No comments: