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

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

P2.玉転がし.07「ビジュアルスクリプト キー入力+力を加える 」

f:id:ore2wakaru:20190115212542p:plain

Armory Engine でのビジュアルスクリプトの最初は、「キー入力 > 力を加える > 玉動く」みたいな流れになるかな。(On Keyboard / Apply Force / Vector

ノードを置く + 移動させる

「ノードとは何か?」みたいな説明的な事はやんないで、とっとと実際にノードを置いて、ビジュアルスクリプティングだ。

Timeline エディタを Logic Node エディタに変更して、"NodePlayer" って名前をつけたシートを1枚作ったよね。そこのところのヘッダの Add > Input > On Keyboard と選択してくれ。

f:id:ore2wakaru:20190115180303p:plain

すると、マウスカーソルの形が変わるから、空いてる所に持ってきて、左クリックしてOn Keyboard ノードを置く。

f:id:ore2wakaru:20190115181534p:plain

しかしなぜかコレが、めちゃくちゃ小さいので・・・、

  • マウスホイールで拡大縮小
  • マウス中ボタンドラッグで上下左右の移動

これらを使って、見やすい大きさ・位置に持って来よう。(マウスホイールや中ボタンドラッグの使い方はここ Logic Node でも、3D Viewport と同じだから分かりやすいね。)

f:id:ore2wakaru:20190115182636p:plain

で、これが「ノード」だ。今後は、この Add ボタンからノードをどんどん追加して、そんで線で繋いでスクリプティングをしていくこととなる。(Add のショートカットは [Shift]+[A]。これも 3D Viewport でオブジェクトを追加する時のと一緒だ。)

ノードの移動は、普通につまんでドラッグだ。(また、ノードを選択した後 [G] キーで移動モードになるので、それでもいける。) それから、移動中に [Ctrl] キーを押しながら移動させると、グリッド線にスナップしながらの移動となるぞ。きっちり派の人は [Ctrl] + 左ドラッグ がお勧め。ただし、先に [Ctrl] キーを押していると移動しないので、移動させながらの + [Ctrl] キーだ。

On Keyboard は何をするノード?

この On Keyboard は「指定のキーが」「特定の状態の時」に「 Out と書かれている出力ピン」から信号を出し次のノードへ処理を移すもの。

f:id:ore2wakaru:20190115185921p:plain

 選択できるキーはリストから選べって感じでどうも決まっているらしく、日本語キーボードにあるようなキーは受け付けないようだな。ここは今後に期待かな?

f:id:ore2wakaru:20190115190329p:plain

 調べられるキーの状態は以下3通り。

f:id:ore2wakaru:20190115191043p:plain

今回は、キーボードの矢印キーで玉を操作したいので、このノードは、「❶左矢印キー」が「❷押されている間」信号が出るようにする。つまりこう。(❷ Down / ❶ left)

f:id:ore2wakaru:20190115191523p:plain

 条件が整った時のみ(今回だったら「左矢印キーが押されている」ってこと)、こっから信号が出るぞ。そしてこことつながってるノードへと処理が移る。

(物理的な)力をオブジェクトに加えるノード

つぎは玉に力を加える処理をしたい。だが、そんなに都合よく、物理的に力を加えるノードなんて用意されてるの? って思うかもしれないが、用意されているんだ。それが Apply Force ノード。

f:id:ore2wakaru:20190115193238p:plain

Add > Physics > Apply Force で追加。これもまた、変なところに出て来るので、イイ感じの位置に持ってきて左クリック、確定だ。

位置がちょっとアレだなーって思ったら、確定した後でも、左ドラッグしてどこにでも動かせるから安心していいぞ。どのノードでもドラッグで動かせる。まずは適当な所に置こう。

そしたら、線でつなぐ。

f:id:ore2wakaru:20190115194458p:plain

処理を次のノードに移したい時は、自ノードの Out ピンを他ノードの In ピンに繋げてやることが必要。(In ピンも Out ピンも赤ぽちだね。ピンには色分けがあるようだ。つなぎまちがえるなってことだね。 又、確か UE4 だとこの線の事を「実行線」なんて呼んでたと思う。)

では、力の大きさはどうするかというと、Force っていう項目で力の大きさを入力

f:id:ore2wakaru:20190115200040p:plain

できるが、ここに入れてしまうと、入れた後、閉じられてしまって見えなくなるので、ここではやらない。外部から見えるようにもう1個ノードを出そう。3つの数値をセットで入れられるやつを使うのだ。

Vector ノード

Add > Variable > VectorVector ノードを出す。さっきの Force の項目では xyz の3つの数値がセットで必要だった。この Vector がその3つの数値をセットで持てるノードだ。だからこれを使うわけ。

f:id:ore2wakaru:20190115203935p:plain

 x軸上でマイナス方向にに動かしたいから数値は、x: "-10" としたが、ここは動かしてみないと分からないので、最初は適当な数値を入れて見てくれ。

 Vector ノードの Out 側から Apply Force ノードの In 側へドラッグして線をつなぐ。これでデータが結びつく。しかも数値が見えてて分かりやすい。

え? 間違ったピンに繋いじゃった? あーあ。ま、そんな時は、In 側のピンからちょっとその辺にドラッグしてやれば外せるから、心配すんな。In 側っていうのはノードの左側の事ね。データを入力する方。Out 側っていうのはノードの右側の事ね。データを出力する方。

玉は動くか?

左矢印キーで、左に押されて動くだけだが、実際に動くかやってみよう。

[▶ Play]

(しばらくしても・・・)

動かん!

たぶん [▶ Play] ボタンを押しても出て来るハズの窓が出てこないと思う。う~んなんでだろう? そんな時、押すボタンがあったよね。どっかにあったはずだ。

だが今日はもう疲れたので、次回、解決する。セーブをお忘れなく。

本日の確認
  • ノードは Out から In へ(実行)線をつなげー。
  • On Keyboard ノード: 「キー入力があったら~」ってやりたかったらコレ。
  • Apply Force ノード: オブジェクトに(物理の)力を加えたかったらコレ。
  • Vector ノード: xyz 3つの数値のセットでデータを保持できるぞ。

 次回、「おかしいなと思った時押すボタン」を押すぜ!