アクションゲームツクールMV

アクションゲームツクールMV

プラグインの書き方がわかりません
目標のオブジェクトと自身の距離を測るスクリプトを書いて、問題なく動作したのですが、これをプラグインにする段階で躓いています。
(()=>{
'use strict';
//パラメーター
const targetObjId = 1;
const pointDistVarName = '対象との距離';
//======================================
//対象と自身のオブジェクトを定義
const target = Agtk.objectInstances.get(Agtk.objectInstances.getIdByName(targetObjId, ''));
const self = Agtk.objectInstances.get(instanceId);
//対象と自身のX座標を取得 変数Id:9はX座標位置
const targetX = target.variables.get(9).getValue();
const selfX = self.variables.get(9).getValue();
//対象と自身のY座標を取得 変数Id:10はY座標位置
const targetY = target.variables.get(10).getValue();
const selfY = self.variables.get(10).getValue();
//三平方の定理
const distance = Math.sqrt( Math.pow( targetX - selfX, 2 ) + Math.pow( targetY - selfY, 2 ) ) ;
//自身の変数に距離を格納
self.variables.get(self.variables.getIdByName(pointDistVarName)).setValue(distance);
})();

入力フォームは目標となるオブジェクトIDの指定と、距離を格納する変数名の指定なんですが、そこの指定の仕方とデータの取り出し方がよくわかりません。
最低限の小さなプラグインでいいので参考になるコード、またはプラグインを教えていただけませんか?
最近の変更はたっくんが行いました; 2023年4月21日 3時25分
< >
1-6 / 6 のコメントを表示
このスレッドの作成者がこの投稿を元のトピックへの回答と指定しました。
Baz 2023年4月20日 9時30分 
これは役に立つのでしょうか?
https://steamcommunity.com/sharedfiles/filedetails/?id=2656450157
とても役に立ちました。
ありがとうございます。
多少手間取りましたが動作するプラグインが作れました。
ただ、読んで気づいたのですが毎フレーム処理を自動でする設定があるんですね。
このプラグインは毎フレーム並列処理させるつもりだったので、アクションプログラムを使わずにプラグイン内で完結できるなら、そうしたいのですが詳しいやり方はどこかに書いてありませんか?
execActionCommandのreturn Agtk.constants.actionCommands.commandBehavior.CommandBehaviorLoop;
にするだけで毎フレーム実行しますか?
あと繰り返しの止め方も知りたいです。
Baz 2023年4月21日 7時32分 
たっくん の投稿を引用:
Agtk.constants.actionCommands.commandBehavior.CommandBehaviorLoop;

これを修正すると、実行時の動作がループします。これを解除するには、条件リンクでアクションを残す必要があります。
baz の投稿を引用:
これを解除するには、条件リンクでアクションを残す必要があります。

日本語版の話で伝わらないかもしれませんが、例えば「オブジェクトを押す・引く」のコマンドのように別のアクションボックスに処理が移るまでループするということでしょうか?
「テンプレート移動の設定」のコマンドのような感じに、停止が実行されるまで毎フレーム、ループさせることは可能でしょうか?
最近の変更はたっくんが行いました; 2023年4月23日 3時30分
Baz 2023年4月23日 18時59分 
たっくん の投稿を引用:
「テンプレート移動の設定」のコマンドのような感じに、停止が実行されるまで毎フレーム、ループさせることは可能でしょうか?
それはよくわかりませんね。私たちがアクセスできない別のバックエンド方式を使用しているのだと思います。
obj.update = function(dt){};の中にコードを書けば、常に毎フレーム処理されるようですが、ゲームを一時停止させても、呼び出したオブジェクトを破棄しても止まらないようです。
条件で囲ってやればいいかもしれませんが、バグの温床になりそうなので、あまりいじりたくない部分ですね。
< >
1-6 / 6 のコメントを表示
ページ毎: 1530 50