Klakを使いUnityのモーションをパッチプログラミングする
Klakとはなにか。引き継いだプロジェクトに入ってたんですが面白そうなので触ってみましょう。
まずここからダウンロード
Releases · keijiro/Klak · GitHub
Latest ReleaseのUnity 2018.3 updateからKlak.unitypackageをダウンロードしましょう。
Unityは2018.3.14fを使用。
何はともあれプロジェクトにインポート。中身はこんな感じです。
Motion
まずはMotionフォルダを見ていきます。Motion/Runtime以下にあるスクリプトを任意のオブジェクトにアタッチすると決められた動きをしてくれます。
SmoothFollow
常にTargetに指定されたオブジェクトに向かっていきます。
ConstantMotion
指定した動きをし続けてくれます。画像の設定ではアタッチしたオブジェクトをスピード1でx軸に沿って移動させ続けてくれます。
Cubeに設定した場合の動きです。プレイ中でも設定を変えると反映されます。
BrownianMotion
この設定にして動かすと、
えーっと、これはブラウン運動ってやつをしてくれてるみたいです。詳しくは
を参照で…
Patching
Klakを使えばUnity上でモーションのパッチプログラミングができます。
まず適当なオブジェクトにKlak/Wiring/Runtime/System/Patchをアタッチ。するとInspectorにOpen Patchのボタンが表示されるのでこれをクリック。
するとパッチプログラミングの画面が表示されます。ここで右クリックしてノード追加し、ノード同士をパッチでつなぎ、させたいモーションをプログラミングすることができます。
基本的な流れとしてはInputから入ってくる値をパッチで変化させてOutputで指定したオブジェクトのパラメータを変えていくことができます。パッチは多数用意されていますが、ここではシンプルなものを流れに合わせて紹介します。
Patcherの作り方
まずPatcherウィンドウで右クリックして、Create/Input/Mouse Position Inputを選択してノードを作成します。続いてCreate/Conversion/From To Vector、Create/Output/Component/Transform Out作り、それぞれをパッチで結線します。
次にFrom To Vectorを選択してInspectorで画像のように設定します。
これは入力(Mouse Positionのx軸の値)が変化すると、ここで設定したFromからToの値への各Vector値の変化が、続くノードに伝えられます。
次にTransform Outを選択してインスペクタで動かしたいオブジェクトをTarget Transformにアタッチします。
結果、こういう動きになります。(キャプチャの都合上見えないけどマウスのX軸の動きに連動)
もう少し動かしてみましょう。次はConversion/Axis Rotationを使って次のように繋げます。
Inspectorの設定はこう。
動かすとこうなります。マウスのX軸の動きがCubeのX軸の動き、マウスのY軸の動きがCubeのY軸回転に対応するようになりました。
大体こんな感じです。PatcherのInputにはゲームコントローラーやキーボードのキー入力なども用意されているので、それらを使ってインタラクションを使うのに便利そうです。Patcherのノードを作ったりの拡張もできるんだろうか?できそうな雰囲気。