戦闘不能時に指定したターン後に自動で蘇生という設定を組みたくて、それ自体は成功したのですがその時に演出でアニメーションを表示したいと思っています。
下記のフトコロさんが書いたスクリプトで行けそうだと思ったのですがパーティーメンバーの何番目に表示するという内容で並び替えで順番が変わってると別のキャラに表示されてしまいます。
viewtopic.php?t=3983
これをアクター自体に設定する方法は無いでしょうか?
指定したアクターにアニメーションを表示させられれば他の方法でもかまいません、どなたか解決法が思いつく方が居ましたらご教授願います。
【解決済み】戦闘時に指定したアクターにアニメーションを表示したい
【解決済み】戦闘時に指定したアクターにアニメーションを表示したい
最後に編集したユーザー スヴェン [ 2022年3月27日(日) 23:54 ], 累計 1 回
Re: 戦闘時に指定したアクターにアニメーションを表示したい
これは、MZの質問で合っているでしょうか?メルト さんが書きました:戦闘不能時に指定したターン後に自動で蘇生という設定を組みたくて、それ自体は成功したのですがその時に演出でアニメーションを表示したいと思っています。
下記のフトコロさんが書いたスクリプトで行けそうだと思ったのですがパーティーメンバーの何番目に表示するという内容で並び替えで順番が変わってると別のキャラに表示されてしまいます。
viewtopic.php?t=3983
これをアクター自体に設定する方法は無いでしょうか?
指定したアクターにアニメーションを表示させられれば他の方法でもかまいません、どなたか解決法が思いつく方が居ましたらご教授願います。
引用されている投稿からのスクリプトはMV用で、MZだとエラーになると思うのですが…
(アニメーション関係は、MVの情報はほぼMZには流用できません)
パーティ内に探しているアクターがどこに並んでいるかは、下記のスクリプトでindexに代入できます。
アニメーション再生のスクリプトも仕様が変わっています。
例(forしか使えない人間でスイマセン)
コード: 全て選択
const searchActorId = 1;//アニメ対象アクターID
let index = -1;
for (let i = 0; i < $gameParty.members().length; i++) {
if ($gameParty.members()[i].actorId() === searchActorId) {
index = i;
}
};
if (index > -1) {
let targets = [];
this.iterateActorIndex(index, actor => {
targets.push(actor);
});
$gameTemp.requestAnimation(targets, 51);//アニメーション51を再生
}
https://fungamemake.com/archives/11361
備考
ケケー氏に教わったところ、下記の書き方で同様の動作になるようです。
コード: 全て選択
const targetId = 1;//アニメ対象アクターID
const targetActor = $gameParty.members().filter(actor => actor._actorId === targetId)[0];
if (targetActor) {
$gameTemp.requestAnimation([targetActor], 51);//アニメーション51を再生
}
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
Re: 戦闘時に指定したアクターにアニメーションを表示したい
ムノクラさん
MZで合ってます!てっきり流用できるものだと思っていました。
ケケーさんのスクリプトで試してみた所無事やりたかったことが出来ました!
ありがとうございました!
MZで合ってます!てっきり流用できるものだと思っていました。
ケケーさんのスクリプトで試してみた所無事やりたかったことが出来ました!
ありがとうございました!
- Plasma Dark
- 記事: 736
- 登録日時: 2020年2月08日(土) 02:29
- 連絡する:
Re: 【解決済み】戦闘時に指定したアクターにアニメーションを表示したい
本書き込みはバグを防ぐためのコードのお行儀に関する話なので、動けば良いというのであれば無視してください。
細かいことですが、先頭の要素に添え字アクセスするならfilterではなくfindを使うと良いと思います。
https://developer.mozilla.org/en-US/doc ... Array/find
(MVの古い環境の場合はfindが使えないこともありましたが、MZなら問題なく使えます)
_actorIdに直接アクセスしているのも気になります。
今回のケースでは問題になることはないでしょうが、_から始まる変数にクラス外から直接アクセスするコードはバグの原因になることが往々にしてあります。
自分で使うコードならともかく、知見として残すコードには相応しくありません。
https://elleonard.github.io/nplus_doc/2 ... m-outside/
もちろん、filterを使って書くのも悪くないと思います。
細かいことですが、先頭の要素に添え字アクセスするならfilterではなくfindを使うと良いと思います。
https://developer.mozilla.org/en-US/doc ... Array/find
(MVの古い環境の場合はfindが使えないこともありましたが、MZなら問題なく使えます)
_actorIdに直接アクセスしているのも気になります。
今回のケースでは問題になることはないでしょうが、_から始まる変数にクラス外から直接アクセスするコードはバグの原因になることが往々にしてあります。
自分で使うコードならともかく、知見として残すコードには相応しくありません。
https://elleonard.github.io/nplus_doc/2 ... m-outside/
コード: 全て選択
const animationId = 51;
const targetActorId = 1;
const targetActor = $gameParty.members().find(actor => actor.actorId() === targetActorId);
if (targetActor) {
$gameTemp.requestAnimation([targetActor], animationId);
}
コード: 全て選択
const animationId = 51;
const targetActorId = 1;
const targetActors = $gameParty.members().filter(actor => actor.actorId() === targetActorId);
if (targetActors.length > 0) {
$gameTemp.requestAnimation(targetActors, animationId);
}
Re: 【解決済み】戦闘時に指定したアクターにアニメーションを表示したい
ご助言いただき、ありがとうございます。Plasma Dark さんが書きました:本書き込みはバグを防ぐためのコードのお行儀に関する話なので、動けば良いというのであれば無視してください。
細かいことですが、先頭の要素に添え字アクセスするならfilterではなくfindを使うと良いと思います。
https://developer.mozilla.org/en-US/doc ... Array/find
(MVの古い環境の場合はfindが使えないこともありましたが、MZなら問題なく使えます)
_actorIdに直接アクセスしているのも気になります。
今回のケースでは問題になることはないでしょうが、_から始まる変数にクラス外から直接アクセスするコードはバグの原因になることが往々にしてあります。
自分で使うコードならともかく、知見として残すコードには相応しくありません。
https://elleonard.github.io/nplus_doc/2 ... m-outside/
もちろん、filterを使って書くのも悪くないと思います。コード: 全て選択
const animationId = 51; const targetActorId = 1; const targetActor = $gameParty.members().find(actor => actor.actorId() === targetActorId); if (targetActor) { $gameTemp.requestAnimation([targetActor], animationId); }
コード: 全て選択
const animationId = 51; const targetActorId = 1; const targetActors = $gameParty.members().filter(actor => actor.actorId() === targetActorId); if (targetActors.length > 0) { $gameTemp.requestAnimation(targetActors, animationId); }
filterも悪くはないが、findのほうがベターな理由は、下記の解釈で合っているでしょうか?
・今回のケースでは、戦闘パーティ内にアクターがいたら、そのオブジェクトを取得できれば良い。
・対象がアクター1人である。
・findは最初に該当するものが見つかった時点で処理を止める分、処理が少ない。
・filterは全てを拾い出すため、今回のケースでは比較的にfindが向いている。
ちなみに、ケアレスミスだと思いますが、filterの例コードがミスしている気がします。
コード: 全て選択
const animationId = 51;
const targetActorId = 1;
const targetActors = $gameParty.members().filter(actor => actor.actorId() === targetActorId);
if (targetActors.length > 0) {
$gameTemp.requestAnimation([targetActors], animationId);
}
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
- Plasma Dark
- 記事: 736
- 登録日時: 2020年2月08日(土) 02:29
- 連絡する:
Re: 【解決済み】戦闘時に指定したアクターにアニメーションを表示したい
ご認識の通りです。filterも悪くはないが、findのほうがベターな理由は、下記の解釈で合っているでしょうか?
・今回のケースでは、戦闘パーティ内にアクターがいたら、そのオブジェクトを取得できれば良い。
・対象がアクター1人である。
・findは最初に該当するものが見つかった時点で処理を止める分、処理が少ない。
・filterは全てを拾い出すため、今回のケースでは比較的にfindが向いている。
filterで返すのはそもそも配列なので、更に配列にするために[]で囲む必要はありません。(targetActorsの前後の[]が抜けているかと…)
Re: 【解決済み】戦闘時に指定したアクターにアニメーションを表示したい
ご返信、ありがとうございます。Plasma Dark さんが書きました:ご認識の通りです。filterも悪くはないが、findのほうがベターな理由は、下記の解釈で合っているでしょうか?
・今回のケースでは、戦闘パーティ内にアクターがいたら、そのオブジェクトを取得できれば良い。
・対象がアクター1人である。
・findは最初に該当するものが見つかった時点で処理を止める分、処理が少ない。
・filterは全てを拾い出すため、今回のケースでは比較的にfindが向いている。
filterで返すのはそもそも配列なので、更に配列にするために[]で囲む必要はありません。(targetActorsの前後の[]が抜けているかと…)
確認、認識不足の補足をいただき、ありがとうございました!
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
Re: 【解決済み】戦闘時に指定したアクターにアニメーションを表示したい
Plasma Darkさん
補足ありがとうございます!
こちらのスクリプトに書き換えさせて頂き、動作も確認致しました!
補足ありがとうございます!
こちらのスクリプトに書き換えさせて頂き、動作も確認致しました!