アクツクMVは、アクションプログラムを使って、ビジュアルにプログラミングができるようになっています。
いろんなアクションが用意されていて、たいていそれで何とかなるのですが、変数を使ってパラメータを変更したいと思っても、できない場合があります。
パラメータはすべて直接、数値で指定するようになっています。
このままでは移動方向や移動距離を、変数でコントロールすることはできません。
変数に角度を入れて、方向を変えたいと思ってもできないのです。
ところが、スクリプトを使えば、簡単に変更することが出来ます。
というわけで、今回はスクリプトでアクションを実行する方法を紹介します。
まず、BazさんのScripting Made Easyのページに行きます。
以下のリンクの中ほどにある「Set Move Direction and Move」のところまでスクロールします。
「Set Move Direction and Move」は、「移動方向を指定して移動」と同じものです。
英語ですが説明があります。
四角で囲われたスクリプト部分をコピーして、オブジェクトの「スクリプトを実行」アクションを追加。そこに貼り付けます。
(function(){
var args = {
"direction": 270,
"directionId": -2,
"moveDistance": 0,
"moveDistanceEnabled": false
}
Agtk.objectInstances.get(instanceId).execCommandDirectionMove(args);
})()
(ここでのアニメーションは、単純な三角形を上下逆(▼)にして、表示方向の設定を「回転で自動生成」にしています。)
最初のパラメータ、
"direction": 270,
となっているところが、方向の角度(270度)です。
ここを書き換えればよいのですが、この場所は変数使うときには使えないので、
下から3行目に、以下の1行を加えます。
args.direction = 90;
これで、270度を90度に変更できます。
(function(){
var args = {
"direction": 270,
"directionId": -2,
"moveDistance": 0,
"moveDistanceEnabled": false
}
args.direction = 90; //ここで角度を変更
Agtk.objectInstances.get(instanceId).execCommandDirectionMove(args);
})()
実行すると、右向きに動くようになりました。
では、アクツクMVの変数でコントロールできるようにします。
まず、オブジェクトに変数「移動角度」を作成します。初期値は0です。
次に、スクリプトを以下のように変更します。
(function(){
var args = {
"direction": 270,
"directionId": -2,
"moveDistance": 0,
"moveDistanceEnabled": false
}
var self = Agtk.objectInstances.get(instanceId); //自分を変数selfへ代入
var dirSelf = self.variables.get(self.variables.getIdByName("移動角度")).getValue(); //移動角度をdirSelfへ代入
args.direction = dirSelf; //ここで角度を変更
Agtk.objectInstances.get(instanceId).execCommandDirectionMove(args);
})()
下から、4,5行目で変数「移動角度」を取得しています。
これで、オブジェクトの変数「移動角度」に数値をいれると、その角度の方向へ進むようになりました。
どうでしょう。わかってしまえば簡単でしょう?
いろいろ試してみてください。
ではさらに、もうすこし遊んでみます。
「角度変更」という新たなアクションを追加して、無条件にループするようにします。
「角度変更」の中身は、
1.「遷移前のモーションを引き継ぐ」にチェックを入れ(入れないとオブジェクトが消えちゃう)、
2.「スイッチ・変数を変更」で自身のオブジェクト「移動角度」+=10
とします。
これで、10度ずつ右に回転していくようになります。
(動画: https://twitter.com/havin_nothin/status/1641673404263854080 )
(このままだと移動角度が無限に大きくなるので、【「移動角度」%=360】というアクションを入れた方が、良いと思います)
BazさんのScripting Made Easyのページ
https://steamcommunity.com/sharedfiles/filedetails/?id=2566824894
には、ほかのアクションのスクリプトも載っていますので、同じように
args.<パラメータ名>=変更したい値;
を最後から3行目に挟むことで変更できるようになります。
これで、変数でパラメータ変更したいけど、できなかったアクションも、変更可能にできました。
ではまた。
感謝:
スクリプトで、アクションのパラメータを設定するのに、オブジェクト型のデータを使っています。
それについては、こちらのサイト参考にしました。ありがとうございます。
【JavaScript】オブジェクト型データ操作の基本
https://qiita.com/TeraSan_codewalker/items/acc21ee232a69d76873a