MOG - Ougi Animation (v1.1)の改造

アバター
kiruko
記事: 38
登録日時: 2019年11月19日(火) 18:37

MOG - Ougi Animation (v1.1)の改造

投稿記事by kiruko » 2019年12月13日(金) 01:16

いつもお世話になっております。
質問ばかりで大変恐縮ですがお答えいただいてくれると嬉しいです。
MOG - Ougi Animation (v1.1)の表現の強化をしたいんです。
カットインが入る時後ろの絵と前の絵が画面前へズームします。
その時前の絵がズームしながら3~4枚絵を使い動きを付けたいんです。
ズーム前に指定した音(SE)が入ればなお幸いです。
プラグイン詳しい方どうかよろしくお願いします。
https://f.easyuploader.app/eu-prd/uploa ... 786547.mp4
↑こちらは後ろの画像を3列にし横に動かし40の速度で流したものです。
ここにさらに上の効果を付けたく思います。
こちらが一番最新のJSです

コード: 全て選択

//=============================================================================
// MOG_OugiAnimation.js
//=============================================================================
/*:
 * @plugindesc (v1.3) Ativa uma animação antes de executar a ação.
 * @author Moghunter
 *
 * @param For Enemies
 * @desc Ativar a animação de ougi para os inimigos
 * @default false
 *
 * @help 
 * =============================================================================
 * +++ MOG - Ougi Animation (v1.1) +++
 * By Moghunter
 * https://atelierrgss.wordpress.com/
 * =============================================================================
 * Ativa uma animação antes de executar a ação.
 *
 * =============================================================================
 * Serão necessários 2 imagens da animação, essas imagens deverão estar na pasta
 * /img/pictures/
 *
 * Actor_ID.png
 * Actor_ID + SUFIX.png
 *
 * Enemy_ID.png
 * Enemy_ID + SUFIX.png
 *
 * Exemplo
 *
 * Actor_2.png
 * Actor_2_Ougi.png
 *
 * =============================================================================
 * Para definir quais as animações que terão as animações de Ougi, basta adicionar
 * esse comentário na caixa de notas da habilidade.
 *
 *  Ougi Animation: _SUFIX
 *
 * Exemplo
 *
 *  Ougi Animation: _Fire
 *  Ougi Animation: _Angry
 *  Ougi Animation: _Happy
 *  ...
 * =============================================================================
 * HISTÓRICOS
 * =============================================================================
 * (v1.3) - Correção do bug aleatório de não ativar a animação. 
 * (v1.2) - Correção de travar a tela quando não se tem a imagem.
 * (v1.1) - Melhoria na codificação.
 */

//=============================================================================
// ** PLUGIN PARAMETERS
//=============================================================================
  var Imported = Imported || {};
  Imported.MOG_OugiAnimation = true;
  var Moghunter = Moghunter || {};

    Moghunter.parameters = PluginManager.parameters('MOG_OugiAnimation');
   Moghunter.ougi_for_enemies = String(Moghunter.parameters['For Enemies'] || "false");

//=============================================================================
// ** Game Temp
//=============================================================================

//==============================
// ** Initialize
//==============================
var _mog_ougi_gtemp_initialize = Game_Temp.prototype.initialize;
Game_Temp.prototype.initialize = function() {
    _mog_ougi_gtemp_initialize.call(this);
   this._ougiData = [false,null,0,0,""];
};
   
//=============================================================================
// ** Battle Manager
//=============================================================================

//==============================
// ** initMembers
//==============================
var _mog_ougi_bmngr_initMembers = BattleManager.initMembers;
BattleManager.initMembers = function() {
    _mog_ougi_bmngr_initMembers.call(this);
   this._ougiForEnemies = String(Moghunter.ougi_for_enemies) === "true" ? true : false
};

//==============================
// ** Start Action
//==============================
var _mog_ougi_bmngr_startAction = BattleManager.startAction;
BattleManager.startAction = function() {
    this.setOuginAnimation();
   _mog_ougi_bmngr_startAction.call(this);
};

//==============================
// ** Set Ougi Animation
//==============================
BattleManager.setOuginAnimation = function() {
    if (this._subject.isEnemy() && !this._ougiForEnemies) {return};
    var skill = this._subject.currentAction().item();
    var notes = skill.note.split(/[\r\n]+/);
     notes.forEach(function(note) {
     var note_data = note.split(': ')
    if (note_data[0].toLowerCase() == "ougi animation"){
       $gameTemp._ougiData = [true,this._subject,0,0,""]
       var par = note_data[1].split(':');
        $gameTemp._ougiData[4] = String(par[0]);
    }
    },this);      
};

//=============================================================================
// ** Scene Battle
//=============================================================================

//==============================
// ** Update
//==============================
var _mog_ougi_sbat_update = Scene_Battle.prototype.update
Scene_Battle.prototype.update = function() {
   if ($gameTemp._ougiData[0]) {this.updateOugi();return}
   _mog_ougi_sbat_update.call(this)
};

//==============================
// ** Create Ougi
//==============================
Scene_Battle.prototype.createOugi = function() {
    this._spriteOugi = [];
   if ($gameTemp._ougiData[1].isActor()) {
      this._spriteOugi[0] =  new Sprite(ImageManager.loadPicture("Actor_" + $gameTemp._ougiData[1]._actorId + $gameTemp._ougiData[4]));
       this._spriteOugi[1] =  new Sprite(ImageManager.loadPicture("Actor_" + $gameTemp._ougiData[1]._actorId));
      this._spriteOugi[3] =  new Sprite(ImageManager.loadPicture("Actor_" + $gameTemp._ougiData[1]._actorId + $gameTemp._ougiData[4]));
       this._spriteOugi[4] =  new Sprite(ImageManager.loadPicture("Actor_" + $gameTemp._ougiData[1]._actorId));


    } else {
      this._spriteOugi[0] =  new Sprite(ImageManager.loadPicture("Enemy_" + $gameTemp._ougiData[1]._enemyId + $gameTemp._ougiData[4]));
       this._spriteOugi[1] =  new Sprite(ImageManager.loadPicture("Enemy_" + $gameTemp._ougiData[1]._enemyId));
   };
   this._spriteOugi[0].anchor.x = 0.5;
   this._spriteOugi[0].anchor.y = 0.5;
   this._spriteOugi[0].opacity = 0;
   this.addChild(this._spriteOugi[0]);
   this._spriteOugi[1].anchor.x = 0.5;
   this._spriteOugi[1].opacity = 0;
   this.addChild(this._spriteOugi[1]);
   this._spriteOugi[2] = false
};

//==============================
// ** Update Terminate
//==============================
Scene_Battle.prototype.ougiTerminate = function() {
    this.removeChild(this._spriteOugi[0]);
   this.removeChild(this._spriteOugi[1]);
    this.removeChild(this._spriteOugi[3]);
   this.removeChild(this._spriteOugi[4]);
   this._spriteOugi = null;
   $gameTemp._ougiData = [false,null,0,0,0];
};

//==============================
// ** center Ougi
//==============================
Scene_Battle.prototype.centerOugi = function() {
  this._spriteOugi[2] = true;
  var cx = Graphics.boxWidth / 2;
  var cy = Graphics.boxHeight / 2;
  this._spriteOugi[0].x = cx;
  this._spriteOugi[0].y = cy;
  this._spriteOugi[1].x = cx;
  this._spriteOugi[1].y = Graphics.boxHeight - this._spriteOugi[1].height;
  this._spriteOugi[0].scale.x = 2.0;
  this._spriteOugi[1].scale.x = 2.0;
  this._spriteOugi[0].opacity = 0;
  this._spriteOugi[1].opacity = 0;

  this._spriteOugi[3].x = cx-Graphics.boxWidth;
  this._spriteOugi[3].y = cy;
  this._spriteOugi[4].x = cx-Graphics.boxWidth;;
  this._spriteOugi[4].y = Graphics.boxHeight - this._spriteOugi[1].height;
  this._spriteOugi[3].scale.x = 2.0;
  this._spriteOugi[4].scale.x = 2.0;
  this._spriteOugi[3].opacity = 0;
  this._spriteOugi[4].opacity = 0;
};

//==============================
// ** Update Ougi Animation
//==============================
Scene_Battle.prototype.updateOugiAnimation = function() {
    if ($gameTemp._ougiData[2] === 0) {
      if (this._spriteOugi[0].scale.x > 1.0) {
         this._spriteOugi[0].scale.x -= 0.05;
         this._spriteOugi[1].scale.x -= 0.05;   
         this._spriteOugi[0].opacity += 16;
         if (this._spriteOugi[0].scale.x <= 1.00) {$gameTemp._ougiData[2] = 1};
         this._spriteOugi[3].scale.x -= 0.05;
         this._spriteOugi[4].scale.x -= 0.05;   
         this._spriteOugi[3].opacity += 16;
      }
   } else if ($gameTemp._ougiData[2] === 1) {
              $gameTemp._ougiData[3] += 1;
         this._spriteOugi[0].scale.x += 0.005;
         this._spriteOugi[1].scale.x += 0.002;
         this._spriteOugi[0].opacity = 255;            
         if ($gameTemp._ougiData[3] >= 40) {$gameTemp._ougiData[2] = 2};      
         this._spriteOugi[3].scale.x += 0.005;
         this._spriteOugi[4].scale.x += 0.002;
         this._spriteOugi[3].opacity = 255;            
   } else {   
          this._spriteOugi[0].scale.x += 0.05;
         this._spriteOugi[1].scale.x += 0.05;
         this._spriteOugi[0].opacity -= 5;
         if (this._spriteOugi[0].opacity === 0) {$gameTemp._ougiData = [false,null,0,0,""];};
         this._spriteOugi[4].scale.x += 0.05;
         this._spriteOugi[3].opacity -= 5;
   };
   this._spriteOugi[0].scale.y = this._spriteOugi[0].scale.x;
   this._spriteOugi[1].scale.y = this._spriteOugi[1].scale.x;
   this._spriteOugi[1].opacity = this._spriteOugi[0].opacity;
   this._spriteOugi[3].scale.y = this._spriteOugi[3].scale.x;
   this._spriteOugi[4].scale.y = this._spriteOugi[4].scale.x;
   this._spriteOugi[4].opacity = this._spriteOugi[3].opacity;

   this._spriteOugi[0].x+=40;
   this._spriteOugi[3].x+=40;
   if (this._spriteOugi[3].x > 0 && this._spriteOugi[0].x > 50){
      this._spriteOugi[0].x = (Graphics.boxWidth / 2)-Graphics.boxWidth;
   } else if (this._spriteOugi[3].x > 50 && this._spriteOugi[0].x > 0){
        this._spriteOugi[3].x = (Graphics.boxWidth / 2)-Graphics.boxWidth;
   };
};

//==============================
// ** Ougi Is Ready
//==============================
Scene_Battle.prototype.ougiIsReady = function() {
   if (!this._spriteOugi[0].bitmap) {return false};
   if (!this._spriteOugi[0].bitmap.isReady()) {return false};
   if (!this._spriteOugi[1].bitmap) {return false};
   if (!this._spriteOugi[1].bitmap.isReady()) {return false};
   if (!this._spriteOugi[3].bitmap) {return false};
   if (!this._spriteOugi[3].bitmap.isReady()) {return false};
   if (!this._spriteOugi[4].bitmap) {return false};
   if (!this._spriteOugi[4].bitmap.isReady()) {return false};
   return true;
};

//==============================
// ** Update Ougi
//==============================
Scene_Battle.prototype.updateOugi = function() {
  if (!this._spriteOugi) {this.createOugi();return};
  if (!this._spriteOugi[2] && this._spriteOugi[0].bitmap.isReady()) {this.centerOugi();}
  if (!this.ougiIsReady()) {return};
  this.updateOugiAnimation();
  if (!$gameTemp._ougiData[0] || this._spriteOugi[0].height === 0 || this._spriteOugi[1].height === 0) {
     this.ougiTerminate();
   };
};

手前の絵はこんな感じに3枚絵を使いたいのです。
https://www.nicovideo.jp/watch/sm24288360

アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: MOG - Ougi Animation (v1.1)の改造

投稿記事by ムノクラ » 2020年2月23日(日) 14:49

kiruko さんが書きました:いつもお世話になっております。
質問ばかりで大変恐縮ですがお答えいただいてくれると嬉しいです。
MOG - Ougi Animation (v1.1)の表現の強化をしたいんです。
カットインが入る時後ろの絵と前の絵が画面前へズームします。
その時前の絵がズームしながら3~4枚絵を使い動きを付けたいんです。
ズーム前に指定した音(SE)が入ればなお幸いです。
プラグイン詳しい方どうかよろしくお願いします。
https://f.easyuploader.app/eu-prd/uploa ... 786547.mp4
↑こちらは後ろの画像を3列にし横に動かし40の速度で流したものです。
ここにさらに上の効果を付けたく思います。
こちらが一番最新のJSです

手前の絵はこんな感じに3枚絵を使いたいのです。
https://www.nicovideo.jp/watch/sm24288360


このプラグインの改変よりも、下記プラグインで、好きな演出をコモンイベントで作成するほうが現実的だと思います。

▼発動前コモン(やな様作)
plugin.fungamemake.com/archives/2033
スキルやアイテムの発動前に、スキルやアイテムに設定されたコモンイベントを発生させます。

カットインの作り方Type3:発動前コモンプラグイン(Yana氏作)
https://fungamemake.com/archives/7685
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。

“MV:プラグイン素材のリクエスト” へ戻る