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

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

P2.玉転がし.05「ヴィジュアルスクリプト準備編(Blender 2.80 エディタ/エリア)」

f:id:ore2wakaru:20190113132259p:plain

さて、そろそろスクリプトで玉を動かしたくなってきた。Armory で利用できるスクリプトプログラミング言語である Haxe(ヘクス)と、Node(ノード)と呼ばれるものを利用するヴィジュアルスクリプトだ。で、「玉転がし」ではヴィジュアルスクリプトを使うぜ。よーし、ヴィジュアルスクリプティングだ! だが今回は、まだその準備だけ。

スクリプト制御のイメージ

オブジェクトをスクリプトで制御するには、両者がバラバラなままではダメ。これらをつなげる仕組みが必要。この仕組み、フックに例えることが出来るんじゃないかと思う。

こんなイメージ。

f:id:ore2wakaru:20190113090520p:plain

こんな感じだ。❶バラバラでは動かないので、❷動かしたいオブジェクトにフックを付け、それにスクリプトをひっかける。❸これで両者がくっついて、やっと、スクリプトでオブジェクトが動く。

(または、スクリプトを挿入するためのスロットを設けて、それにスクリプトを挿すと、スクリプトでオブジェクトが制御できると考えてもいいけど。)

ま、とにかくオブジェクトとスクリプト連結させる準備が必要って事。

フックの準備

では、連結用フックの準備、とにかく具体的にやって行こう。

f:id:ore2wakaru:20190113053118p:plain

 今回は、Sphere(玉ちゃん)をキー入力で動かしたいので、これを選択する。当たり前すぎるが、スクリプトで動かしたいモノを選択しておく事。

 プロパティエディタ > オブジェクト(Object)タブ を選んで、

 Armory Traits[+] ボタンをクリックする。

Trait(発:トイト、意:特徴)。この Trait がさっき上で述べたフックの役割。トレイトとか、変な名前つけんなって思うけど、まーしょうがないネ。ここで、めんどくせーなーって思ってやる気なくすなよ!

f:id:ore2wakaru:20190113054547p:plain

 スクリプトの種類を選んでねっていう窓が開くので、今回は Nodes を選択し、

 [OK] ボタン。

f:id:ore2wakaru:20190113055449p:plain

 こうなれば成功。

これで、「スクリプトをひっかけるためのフックを1つ、オブジェクトに付けたよーっ」て事になる。

もちろん、横の [+] ボタンを何度も押して複数つければ、複数のスクリプトで制御できるようになるぞ。また、外したい時は、 外したいのを選んで [-] ボタンだ。

ちなみにで選べる種類は、

  1. Haxe: プログラム言語 Haxe を使ったスクリプトを使う場合はこれ。
  2. Wasm: しらん。
  3. UI: UI を制御したい場合はこれ。UI ってゲームで得点表示するとかの UI ね。
  4. Bundled: Armory が内蔵しているスクリプトを利用する場合はこれ。中身は Haxe
  5. Nodes: ヴィジュアルスクリプトを使う場合はこれ。

こんな感じ。今回はヴィジュアルスクリプトでいくから、Nodes を選んだ。

Logic Node エディタを出す

スクリプトをひっかける準備は出来たので、今度はスクリプトの準備だ。

f:id:ore2wakaru:20190113063343p:plain

 左下のエディタ、Timeline(タイムライン)エディタのアイコンをクリックして、

 出てきた窓の中から、Logic Node Editor(ロジックノード)を選択。

そうすると、今までタイムラインエディタだったエリアがロジックノードエディタに変わる。特にアニメーションしたいとかないから、タイムラインエディタには消えてもらったぞ。

こんな感じで、どのエディタでもヘッダ左上のアイコンをクリックすることで変更することが可能だ。

f:id:ore2wakaru:20190113070343p:plain

変えたは変えたけど、このままでは Node を置いてスクリプトしていくには狭いよね。

エディタのエリア調整

広げよう。

f:id:ore2wakaru:20190113121322p:plain

こんな感じに、3D Viewport と Logic Node エディタの境界線上でドラッグして、Logic Node エディタのエリアを広げよう。

ここ以外でも、エディタとエディタの境界上にマウスカーソルを持ってきて、カーソルが の形に変わったら、ドラッグしてやることでエリアの大きさを変えることが出来る。

スクリプトの準備

f:id:ore2wakaru:20190113124241p:plain

 Logic Node エディタのヘッダ、真ん中らへんにある [+ NEW] ボタンをクリック。

 "NodeTree" という名前が勝手に付くから、

 その部分をクリックして、"NodePlayer" とか、何でもいいので自分の好きな名前に変えておこう。まあ、これはプレイヤーである「玉」制御用だから、それだと分かる名前がいいね。

今後、この上に Node(ノード) を乗せてスクリプトを完成させていくが、これは言ってみれば、そのノードを乗せるシートみたいなもんだな。(これを、Armory ではノードトゥリー(node tree)とか単にトゥリー(tree)とか呼ぶみたい。)

そして、最後に、

f:id:ore2wakaru:20190113130539p:plain

 Armory Traits カテに戻って、この Tree と書いてある横の黒い所をクリックし、

 さっき自分で名前をつけたやつを選ぶと、

f:id:ore2wakaru:20190113130958p:plain

こんな感じで、2ヶ所、ちゃんと名前が入ってくるから確認してくれ。

やっと、つながった

これで、オブジェクトとスクリプトが連結した。まだスクリプトの中身は空っぽだから [▶ Play] しても Sphere に対して何もしないけどね。

中身は次から書いていこう。ま、書くというより、ノードをポンポンとさっきのシート(ノードトゥリー)の上に乗せてつなぐ感じなんだけどな。

本日の確認
  • スクリプトは、「1.Trait 追加 > 2.NodeTree 作成 > 3.Tree から選ぶ」の3段階でオブジェクトと連結できる。

準備はめんどくさいけど、3段階で出来るから、早いとこ慣れてしまおう。


 次回、実際にスクリプトの中身を書いていく。