Friday, November 16, 2018

Amazon Lumberyard学習メモ:Actorにフィジックスを適用する

キャラクター改良の続きです。
今回は「高低差がある地形の上を移動出来る様にする」です。

参考資料:Amazon Lumberyard character made with mixamo, blender, and script canvas.
Amazon Game TechのYoutubeチャンネル

以前作成したキャラクターの移動は平面上だけに限られていました。地面の上を歩いていたのも実は見掛けだけで、実際は地平面の位置にキャラクターの高さを合わせていただけに過ぎません。

今回はキャラクター(アクター)にフィジックスを適用し、重力を作用させて、地面のコリジョンの上に接触しながら移動する様にします。

まずLumberyardの機能を使って地形を作成しましょう。
これはいつものキャラクターのレベルです。


Tools - Terrain Editorを実行します。


Terrain Editorが開きました。

Terrain Editorは地形を作成する為のツールです。今回は自動生成で地形を作る事にします。

最初に地形の最も高い部分の高さを決めます。
Terrain EditorのModify - Set Terrain Max Heightを実行します。


数値入力ウィンドウが出ますので、高さの数値を入力します。今回は100としました。

OKをクリックして戻ります。

次にTerrain EditorのTools - Generate Terrain...を実行します。


地形生成に使う各パラメータが表示されます。今回はデフォルト設定を使う事にし、そのままOKをクリックします。


地形が生成され、グレイスケール画像が表示されました。Terrain Editorを閉じて下さい。


地面に高さがついているのが確認出来ます。
地面が持ち上がったのでキャラクターとカメラはその下になってしまっています。


キャラクターとカメラを地面の上に持ってきました。


ここで試しにGame - Play Gameを実行してみます。キャラクターが待機モーションになりましたが、まだフィジックスを入れていないので重力が作用していません。


フィジックスをキャラクターに追加してみましょう。
Escキーを押してゲームから抜けます。


キャラクターを選択してからEntity Inspectorを見て下さい。キャラクターは現在この様なコンポーネント構成になっています。Add Componentをクリックして、コンポーネントのリストを表示して下さい。


Character Physicsを選択します。


Character Physicsが追加されました。


次にスクリプトの一部を書き換えます。
キャラクター移動の部分は現在この様になっています。


この中のMove EntityをAdd Impulseに置き換えます。(Impulseとはこういう事だそうです。)そして、調整の為に入力に掛け算していた数値も変更します。今回は変更前の500倍にしました。


書き換えが終わったらスクリプトをセーブし、Play Gameでテストです。
キャラクターが地形の上を歩く様になりました。


No comments: