俺に解るように説明する "Armory Engine" 入門+

ゲームエンジン Armory Engine (Armory3D) の使い方を手探りで学んで入門しようって感じかな。

P6.ねぇ、アリシアちゃん☆.03「3rd Person Character Controller テスト(Blender 2.80 エリア最大化)」

f:id:ore2wakaru:20190612210155p:plain

サードパーソン・キャラクタ・コントローラノードだけで作ってみた。なかなかコレって凄いと思う。実は俺って天才なんじゃない? ポイントは「ヘッド部分にあるオブジェクト("CamPivPiv")に子オブジェクト("CamPivPivF", "CamPivPivR")を付け、そいつらの位置からカメラ方向に対して前と右のベクトルを作るところ」だ。

今更ながらLogic Node エディタで使えるショートカット

今更だが、Ctrl+Spaceマウスカーソルがあるエリアがおっきくなる。戻す時も Ctrl+Space のトグル式。これが意外と使える。ノードトゥリーを書くのに小さい場所でチマチマやるのは目も疲れるしね。おっきくしてやんな。

  • Ctrl+Space: エリアを大きくする / 大きさを戻す

f:id:ore2wakaru:20190612165017p:plain

f:id:ore2wakaru:20190612165035p:plain

Ctrl+Alt+Space だともっと大きくなるけど、ボタン3つ押すのメンドイしヘッダの辺りのボタンが消えて全部ショートカットでやんなきゃいけなくなるので、これはやめとけって感じだ。)

それから、ノードトゥリーの移動はマウス中ボタンドラッグの他に、

  • Ctrl+マウスホイールぐるぐる: 水平移動
  • Shift+マウスホイールぐるぐる: 垂直移動

が出来る。多分、他のエディタでもそうなってるハズ。真横とか真上とかに移動したい時は便利。マウス中ボタンは押し込むのに力がいるからね。で、

  • 普通にマウスホイールぐるぐる: 拡大縮小

なのはご存知の通り。

あと、使えるショートカットとしては

  • Home: 全体を表示
  • テンキーのピリオド ".": 選択ノードを中心に表示

というのがある。ノードはアッチコッチに置けるから、たまに、はるか遠くに置いてしまった孤立ノードとかが Home で発見できる。

3rd Person Character Controller

では、本題。YouTube

問題点:

  • まだ、アリシアちゃんが進行方向を向かない。
  • モーションもまだ。
  • なんか、色が薄い? (シェーダー関係かな?)
ノードトゥリー

では、今回もノードトゥリーを貼っておこう。

f:id:ore2wakaru:20190612193722p:plain

f:id:ore2wakaru:20190612193914p:plain

 各種プロパティ設定。

  • "myDir": 自分の進む方向。
  • "mySpd": 自分の進む速度。秒速。ほんとは Float 型でセットしたいんだけど、ノードの場合計算させるのがメンドイのでベクトルで。
  • "camDirF": カメラの進行方向ベクトル。前。
  • "camDirR": カメラの右方向ベクトル。右。

f:id:ore2wakaru:20190612194600p:plain

❷-1

  • キャラコンはリジッドボディーなので、Update物理用
  • ヘッドオブジェ("CamPivPiv")とその子らのを取って、カメラ方向に対しての前・右ベクトルを求めている。"camDirF" に向き、"camDirR" に向きのベクトルが入る。これらがあるからカメラ方向に対しての WADS 移動が出来るというわけ。
  • "myDir"(自分の進行方向とスピード)は毎回最初にクリアしておいて、この後 ❷-2❷-3 で決定させる。

f:id:ore2wakaru:20190612195639p:plain

❷-2

  • Keyboard Stateっていうノードは Armory 6月号廃止になったみたいだ。Keyboradになったみたい。ただコレ、Out から線をつながなくても動いちゃうからなんか変な感じだな。
  • やってることは、"a" を押したら、"myDir" から右向きベクトル("camDirR")を引いて、"d" を押したら、"myDir" に右向きベクトル("camDirR")を足すってことだ。カメラ方向に対して左右の進行方向をグローバル座標(ワールド座標)でセットしていく。

f:id:ore2wakaru:20190612201902p:plain

❷-3

  • ここでは、カメラ方向に対して前後をセットしていく。前後だから "camDirF" を足したり引いたりしてるんだぞ。
  • ❷-2❷-3 を通じて、前後左右のキー入力を加算してるから、W+D とか複数キー同時押しで斜めに行くことも出来る。このやり方はキャラ移動の基本設計みたいだ。覚えておこう。

f:id:ore2wakaru:20190612202301p:plain

❷-4

  • 前後左右の足し算・引き算で求まった "myDir" をノーマライズしてから、スピード("mySpd")を掛けて移動させる。
  • ただ、重力は欲しいので、Get VelocityZ 方向の値を持ってくる。Get Velocityではリジッドボディーの現在の動きが取得できる。
  • 物理の移動にはSet Velocityを使う。リジッドボディーの動きをこれでセットしちゃう感じだな。Linear が各軸方向への移動速度(まーそのものずばり、ベロシティーだよ)、Angular は各軸の回転速度を入れるところ。
  • それぞれの Factor には倍率を入れる。今回はキャラコンが傾かないように、Angular FactorX Y に "0.000" を入れる。

f:id:ore2wakaru:20190614051245p:plain

 ジャンプ

  • Apply Impulseで一瞬の力を加える。まー、ビリヤードで玉を突く感じの力の加え方だ。ここでは Z: "50" になってるが、アリシアちゃんの重さを 20 にしたから(確か 20 のはず)。物体の重さのデフォは 1 なので、大きすぎる力を加えると戻ってくるまでに時間が・・・。まー、様子を見て変えてくれ。

以上。


 次回は、方向転換とモーションだな。