P2.玉転がし.07「ビジュアルスクリプト キー入力+力を加える 」
Armory Engine でのビジュアルスクリプトの最初は、「キー入力 > 力を加える > 玉動く」みたいな流れになるかな。(On Keyboard / Apply Force / Vector)
ノードを置く + 移動させる
「ノードとは何か?」みたいな説明的な事はやんないで、とっとと実際にノードを置いて、ビジュアルスクリプティングだ。
Timeline エディタを Logic Node エディタに変更して、"NodePlayer" って名前をつけたシートを1枚作ったよね。そこのところのヘッダの Add > Input > On Keyboard と選択してくれ。
すると、マウスカーソルの形が変わるから、空いてる所に持ってきて、左クリックしてOn Keyboard ノードを置く。
しかしなぜかコレが、めちゃくちゃ小さいので・・・、
- マウスホイールで拡大縮小
- マウス中ボタンドラッグで上下左右の移動
これらを使って、見やすい大きさ・位置に持って来よう。(マウスホイールや中ボタンドラッグの使い方はここ Logic Node でも、3D Viewport と同じだから分かりやすいね。)
で、これが「ノード」だ。今後は、この Add ボタンからノードをどんどん追加して、そんで線で繋いでスクリプティングをしていくこととなる。(Add のショートカットは [Shift]+[A]。これも 3D Viewport でオブジェクトを追加する時のと一緒だ。)
ノードの移動は、普通につまんでドラッグだ。(また、ノードを選択した後 [G] キーで移動モードになるので、それでもいける。) それから、移動中に [Ctrl] キーを押しながら移動させると、グリッド線にスナップしながらの移動となるぞ。きっちり派の人は [Ctrl] + 左ドラッグ がお勧め。ただし、先に [Ctrl] キーを押していると移動しないので、移動させながらの + [Ctrl] キーだ。
On Keyboard は何をするノード?
この On Keyboard は「❶指定のキーが」「❷特定の状態の時」に「❸ Out と書かれている出力ピン」から信号を出し次のノードへ処理を移すもの。
❶ 選択できるキーはリストから選べって感じでどうも決まっているらしく、日本語キーボードにあるようなキーは受け付けないようだな。ここは今後に期待かな?
❷ 調べられるキーの状態は以下3通り。
今回は、キーボードの矢印キーで玉を操作したいので、このノードは、「❶左矢印キー」が「❷押されている間」信号が出るようにする。つまりこう。(❷ Down / ❶ left)
❸ 条件が整った時のみ(今回だったら「左矢印キーが押されている間」ってこと)、こっから信号が出るぞ。そしてこことつながってるノードへと処理が移る。
(物理的な)力をオブジェクトに加えるノード
つぎは玉に力を加える処理をしたい。だが、そんなに都合よく、物理的に力を加えるノードなんて用意されてるの? って思うかもしれないが、用意されているんだ。それが Apply Force ノード。
Add > Physics > Apply Force で追加。これもまた、変なところに出て来るので、イイ感じの位置に持ってきて左クリック、確定だ。
位置がちょっとアレだなーって思ったら、確定した後でも、左ドラッグしてどこにでも動かせるから安心していいぞ。どのノードでもドラッグで動かせる。まずは適当な所に置こう。
そしたら、線でつなぐ。
処理を次のノードに移したい時は、自ノードの Out ピンを他ノードの In ピンに繋げてやることが必要。(In ピンも Out ピンも赤ぽちだね。ピンには色分けがあるようだ。つなぎまちがえるなってことだね。 又、確か UE4 だとこの線の事を「実行線」なんて呼んでたと思う。)
では、力の大きさはどうするかというと、Force っていう項目で力の大きさを入力
できるが、ここに入れてしまうと、入れた後、閉じられてしまって見えなくなるので、ここではやらない。外部から見えるようにもう1個ノードを出そう。3つの数値をセットで入れられるやつを使うのだ。
Vector ノード
Add > Variable > Vector で Vector ノードを出す。さっきの Force の項目では xyz の3つの数値がセットで必要だった。この Vector がその3つの数値をセットで持てるノードだ。だからこれを使うわけ。
❶ x軸上でマイナス方向にに動かしたいから数値は、x: "-10" としたが、ここは動かしてみないと分からないので、最初は適当な数値を入れて見てくれ。
❷ Vector ノードの Out 側から Apply Force ノードの In 側へドラッグして線をつなぐ。これでデータが結びつく。しかも数値が見えてて分かりやすい。
え? 間違ったピンに繋いじゃった? あーあ。ま、そんな時は、In 側のピンからちょっとその辺にドラッグしてやれば外せるから、心配すんな。In 側っていうのはノードの左側の事ね。データを入力する方。Out 側っていうのはノードの右側の事ね。データを出力する方。
玉は動くか?
左矢印キーで、左に押されて動くだけだが、実際に動くかやってみよう。
[▶ Play]
(しばらくしても・・・)
動かん!
たぶん [▶ Play] ボタンを押しても出て来るハズの窓が出てこないと思う。う~んなんでだろう? そんな時、押すボタンがあったよね。どっかにあったはずだ。
だが今日はもう疲れたので、次回、解決する。セーブをお忘れなく。
本日の確認
- ノードは Out から In へ(実行)線をつなげー。
- On Keyboard ノード: 「キー入力があったら~」ってやりたかったらコレ。
- Apply Force ノード: オブジェクトに(物理の)力を加えたかったらコレ。
- Vector ノード: xyz 3つの数値のセットでデータを保持できるぞ。
■ 次回、「おかしいなと思った時押すボタン」を押すぜ!