0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

アクツクMV:既存のアクションをスクリプトで実行(変数でパラメータを操作する)

Last updated at Posted at 2023-03-31

アクツクMVは、アクションプログラムを使って、ビジュアルにプログラミングができるようになっています。
いろんなアクションが用意されていて、たいていそれで何とかなるのですが、変数を使ってパラメータを変更したいと思っても、できない場合があります。

たとえば「移動方向を指定して移動」アクション。
image.png

パラメータはすべて直接、数値で指定するようになっています。
このままでは移動方向や移動距離を、変数でコントロールすることはできません。
変数に角度を入れて、方向を変えたいと思ってもできないのです。

ところが、スクリプトを使えば、簡単に変更することが出来ます。
というわけで、今回はスクリプトでアクションを実行する方法を紹介します。

まず、BazさんのScripting Made Easyのページに行きます。
以下のリンクの中ほどにある「Set Move Direction and Move」のところまでスクロールします。
「Set Move Direction and Move」は、「移動方向を指定して移動」と同じものです。
英語ですが説明があります。

image.png

四角で囲われたスクリプト部分をコピーして、オブジェクトの「スクリプトを実行」アクションを追加。そこに貼り付けます。

(function(){
var args = {
    "direction": 270,
    "directionId": -2,
    "moveDistance": 0,
    "moveDistanceEnabled": false
}
Agtk.objectInstances.get(instanceId).execCommandDirectionMove(args);
})()

image.png

(ここでのアニメーションは、単純な三角形を上下逆(▼)にして、表示方向の設定を「回転で自動生成」にしています。)
image.png

実行すると、オブジェクトが左(270度)に向かいます。
image.png

最初のパラメータ、
"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);
})()

image.png

実行すると、右向きに動くようになりました。

image.png

では、アクツクMVの変数でコントロールできるようにします。
まず、オブジェクトに変数「移動角度」を作成します。初期値は0です。
image.png

次に、スクリプトを以下のように変更します。

(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

とします。

image.png

これで、10度ずつ右に回転していくようになります。
image.png
(動画: 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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?