yana様の「条件付きスキル&アイテム変化」の閃きアニメについて

アバター
進撃のエレン
記事: 49
登録日時: 2017年5月13日(土) 21:01

yana様の「条件付きスキル&アイテム変化」の閃きアニメについて

投稿記事by 進撃のエレン » 2019年1月11日(金) 23:44

該当プラグインで、新しいスキルを閃く際にアニメーションを表示させる事が出来るのですが、このアニメーションが最後までウェイトがかからずアニメーションの途中にも関わらず新しいスキルが発動してしまいます。
これをアニメーションの最後ウェイトがかかるようにする事は可能でしょうか?
プラグインに直接コードを記載すれば良いのであればそのコードを教えて頂ければ幸いです。

何卒宜しくお願いします。

ジャングル
記事: 66
登録日時: 2018年12月30日(日) 14:51

Re: yana様の「条件付きスキル&アイテム変化」の閃きアニメについて

投稿記事by ジャングル » 2019年1月13日(日) 08:45

初めまして。ジャングルといいます。

setTimeout()で後の処理を遅らせたらどうですか?
私はこれでアニメ発生のタイミングを取っていますが。

このメソッドについての解説がありました。
https://techacademy.jp/magazine/5541
https://www.sejuku.net/blog/24540
https://developer.mozilla.org/ja/docs/W ... setTimeout

ご存知だったら済みません。
コードじゃなくて済みません。
アバター
進撃のエレン
記事: 49
登録日時: 2017年5月13日(土) 21:01

Re: yana様の「条件付きスキル&アイテム変化」の閃きアニメについて

投稿記事by 進撃のエレン » 2019年1月14日(月) 09:42

ジャングル様

アクター登場時の質問に引き続き、こちらでもご返答頂きましてありがとうございます!
教えていただいた方法ではありませんが、
プラグイン側でアニメーションのセット時のウェイトがfalseになっていたのでtrueにするとウェイトがかかりました。
ただ、この問題とは別の問題が発生しており、そちらでもお力を貸して頂ければ幸いです。

それは鳥小屋様の「戦闘中セリフ表示さん」のプラグインとの問題です。

希望は「ひらめきアニメーションを表示後、戦闘中セリフ表示さんプラグインで設定したセリフを表示」
させたいのですが、現状「ひらめきアニメーションと同時にセリフが表示」されてしまい、アニメーションと被ってしまっています。
こちらを希望の通りの表示方法に変更するコードはありますか?
(それこそ教えていただいたsetTimeout()でアニメーションにウェイトをかけて他の動作はしないように出来れば一番なのですが、どの部分に記載すれば良いのかがわかりません……)

[条件付きシリーズ]
https://www6.atwiki.jp/pokotan/pages/3.html

戦闘中セリフ表示さん
https://torigoya.hatenadiary.jp/entry/b ... _battle_mv

何卒宜しくお願い致します。
ジャングル
記事: 66
登録日時: 2018年12月30日(日) 14:51

Re: yana様の「条件付きスキル&アイテム変化」の閃きアニメについて

投稿記事by ジャングル » 2019年1月14日(月) 11:51

プラグインをちょっと見てみましたが、
次の箇所で遅らせてはどうですか?

スプライトセットにaddChild()してます。

var upstream_Spriteset_Battle_createLowerLayer = Spriteset_Battle.prototype.createLowerLayer;
Spriteset_Battle.prototype.createLowerLayer = function () {
upstream_Spriteset_Battle_createLowerLayer.apply(this);
maybeOriginal_battlerSprites.apply(this).forEach((function (battlerSprite) {
// 画面の色調変更の暫定対応
// battleFieldにappendしてしまうと影響を受けてしまうが、
// カメラなどの対応ができないのでYEPプラグインなどでおかしくなってしまう…><;
if (settings['Secret Disable Append To Field']) {
this.addChild(battlerSprite.torigoya_balloonWindow);
} else {
// ↓ ここです
this._battleField.addChild(battlerSprite.torigoya_balloonWindow);
}
}).bind(this));
};

setTimeout()は、引数で与えた関数の実行を遅らせるものなので、
条件によってaddChild()の発生を遅らせれば可能です。

例えばひらめきアニメーションを流すときにフラグを立てて、
その場合はsetTimeout()で遅らせるようにするとか。

コード: 全て選択

  if (settings['Secret Disable Append To Field']) {
    this.addChild(battlerSprite.torigoya_balloonWindow);
  } else {
      // ↓ これを if 文で囲んでください。スイッチにより遅らせるかどうかを分岐。
      var t = setTimeout((function(that) {
         return function() {
            that._battleField.addChild(battlerSprite.torigoya_balloonWindow);
            clearTimeout(t);
         };
      })(this), 10000); // <- タイミングはここで調整します。
  }



遅らせたいところでスイッチを入れてください。
アバター
進撃のエレン
記事: 49
登録日時: 2017年5月13日(土) 21:01

Re: yana様の「条件付きスキル&アイテム変化」の閃きアニメについて

投稿記事by 進撃のエレン » 2019年1月14日(月) 13:10

ご返信ありがとうございます。

コード: 全て選択

   if (settings['Secret Disable Append To Field']) {
                this.addChild(battlerSprite.torigoya_balloonWindow);
              } else {
                  // ↓ これを if 文で囲んでください。スイッチにより遅らせるかどうかを分岐。
                  if($gameSwitches.value(5)){
                  var t = setTimeout((function(that) {
                     return function() {
                        that._battleField.addChild(battlerSprite.torigoya_balloonWindow);
                        clearTimeout(t);
                     };
                  })(this), 1000); // <- タイミングはここで調整します。
              }}


おそらくこうなのかなと思い記述しましたが、スイッチのON/OFF関わらずセリフが表示されなくなってしまいました。
この記述で合っていますか?
ジャングル
記事: 66
登録日時: 2018年12月30日(日) 14:51

Re: yana様の「条件付きスキル&アイテム変化」の閃きアニメについて

投稿記事by ジャングル » 2019年1月14日(月) 13:27

分岐が必要です。
つまり、if文の条件以外の場合の記述が必要です。

コード: 全て選択

if ($gameSwitches.value(5)) {
    // 今のコード ↓を追加しないとダメです。
} else {
    that._battleField.addChild(battlerSprite.torigoya_balloonWindow);
}


分岐して、遅らせるかどうかを指定します。

分かりにくかったら済みません。
アバター
進撃のエレン
記事: 49
登録日時: 2017年5月13日(土) 21:01

Re: yana様の「条件付きスキル&アイテム変化」の閃きアニメについて

投稿記事by 進撃のエレン » 2019年1月15日(火) 12:34

ありがとうございます。

コード: 全て選択

    var upstream_Spriteset_Battle_createLowerLayer = Spriteset_Battle.prototype.createLowerLayer;
    Spriteset_Battle.prototype.createLowerLayer = function () {
        upstream_Spriteset_Battle_createLowerLayer.apply(this);
        maybeOriginal_battlerSprites.apply(this).forEach((function (battlerSprite) {
            // 画面の色調変更の暫定対応
            // battleFieldにappendしてしまうと影響を受けてしまうが、
            // カメラなどの対応ができないのでYEPプラグインなどでおかしくなってしまう…><;
            if (settings['Secret Disable Append To Field']) {
                this.addChild(battlerSprite.torigoya_balloonWindow);
              } else {
                if($gameSwitches.value(5)){
                  // ↓ これを if 文で囲んでください。スイッチにより遅らせるかどうかを分岐。
                  var t = setTimeout((function(that) {
                     return function() {
                        that._battleField.addChild(battlerSprite.torigoya_balloonWindow);
                        clearTimeout(t);
                     };
                  })(this), 60); // <- タイミングはここで調整します。
                } else {
                    that._battleField.addChild(battlerSprite.torigoya_balloonWindow);
                };

    // -------------------------------------------------------------------------
    // 吹き出し発生イベントの設定
    // -------------------------------------------------------------------------


教えて頂いたコードを全部入れてみましたが、やはり表示がされなくなってしまいました。
記述は合っていますか?
ジャングル
記事: 66
登録日時: 2018年12月30日(日) 14:51

Re: yana様の「条件付きスキル&アイテム変化」の閃きアニメについて

投稿記事by ジャングル » 2019年1月15日(火) 14:30

こちらでは動いてますけど・・・。
フキダシが遅れて表示されます。

setTimeout()の2引数はミリ秒です。
フレームではないので、60という値はおかしいですね。
1000ミリ秒=1秒です。

動かないのであれば、
私なら、条件を簡単にして実験します。
(ひらめき後ではなく、Skill発動のときは動いてくれるかとか。)

シンプルな条件で確認を行うと問題の切り分けになり解決に繋がります。
アバター
進撃のエレン
記事: 49
登録日時: 2017年5月13日(土) 21:01

Re: yana様の「条件付きスキル&アイテム変化」の閃きアニメについて

投稿記事by 進撃のエレン » 2019年1月15日(火) 17:05

ありがとうございます。

>こちらでは動いてますけど・・・。
なぜでしょうね……。
新規プロジェクトで試してみても表示されない状態です。
記述が合っているのであれば何か他に要因があるのでしょうね。

他の方法で遅らせれるかどうか調べる事に致します。
ジャングル様、長い時間お手数をおかけ致しまして申し訳ございませんでした。
ありがとうございました。
ジャングル
記事: 66
登録日時: 2018年12月30日(日) 14:51

Re: yana様の「条件付きスキル&アイテム変化」の閃きアニメについて

投稿記事by ジャングル » 2019年1月15日(火) 18:47

アニメーション後が具体的にどういう状況かわからないので、
こちらではスキルで実験しました。

それでは上手く機能して、
2~3秒遅れて表示させられました。
※小さい値を与えたときは表示されないことがありました。

一応テストプレイ中にF8キーを押してエラーが出てないかどうかを確認してはいますよね?
エラーが出ていればその箇所を修正すれば済みます。

力になれず済みません。

“MV:質問” へ戻る