MOG_TitleParticles.js【中文注解】【标题粒子效果】


//=============================================================================

// MOG_TitleParticles.js

// 标题界面粒子效果及魔法圈

//=============================================================================

/*:

 * @plugindesc (v1.1) 在初始化页面创建出粒子,利用粒子制作动画

 * @author Moghunter

 *

 * @param ParticleNumber

 * @desc Quantidade de partículas na tela.//粒子个数

 * (Default - 25)

 * @default 25

 *

 * @param X axis Speed

 * @desc Velocidade da partícula na horizontal.//粒子水平速度

 * @default 1

 *

 * @param Y axis Speed

 * @desc Velocidade da partícula na vertical.//粒子垂直速度

 * @default -2

 *

 * @param A Speed

 * @desc Velocidade do ângulo das partículas.//粒子角速度

 * (Default - 0.02)

 * @default 0.02

 *

 * @param Blend Mode

 * @desc Tipo de Blend. (0 a 2)//图像混合模式

 * @default 1

 *

 * @param OX

 * @desc Definição da origem X das partículas. (0.5 - Centralizado / 1.0 - Normal)//粒子锚点X

 * @default 1.0

 * 

 * @param OY

 * @desc Definição da origem Y das partículas. (0.5 - Centralizado / 1.0 - Normal)//粒子锚点Y

 * @default 1.0

 * 

 * @param Magic Circle Visible

 * @desc Ativar o sprite do circulo mágico.  (true / false)//魔法圈是否可见

 * É necessário ter o arquivo Magic_Circle.png//需要Magic_Circle.png

 * @default false

 * 

 * @param Magic Circle OX

 * @desc Definição da posição X-axis do circulo mágico.//魔法圈锚点X

 * @default 0

 * 

 * @param Magic Circle OY

 * @desc Definição da posição Y-axis do circulo mágico.//魔法圈锚点Y

 * @default 0

 * 

 * @param Magic Circle A Speed

 * @desc Definição da velocidade de rotação do circulo mágico.//魔法圈转速

 * (Default - 0.01)

 * @default 0.01

 * 

 * @param Magic Circle Blend Type

 * @desc Tipo de Blend. (0 a 2)//魔法圈混合类型

 * @default 1

 * 

 * @help  

 * =============================================================================

 * +++ MOG - Title Particles (v1.1) +++

 * By Moghunter 

 * https://atelierrgss.wordpress.com/

 * =============================================================================

 * Adiciona partículas animadas na tela de título

 * alem da opção de ativar o circulo mágico.

 * É necessário ter o arquivo Particles.png na pasta.

 *

 * img/titles2/

 *

 * =============================================================================

 * ** Histórico **

 * =============================================================================

 * v1.1 - Melhoria na codificação.

 * 

 * 

 */

//=============================================================================

// ** PLUGIN PARAMETERS

//=============================================================================

  var Imported = Imported || {};

  Imported.MOG_Title_Particles = true;

  var Moghunter = Moghunter || {}; 

   Moghunter.parameters = PluginManager.parameters('MOG_TitleParticles');

    Moghunter.title_particle_number  = Number(Moghunter.parameters['ParticleNumber'] || 25);

    Moghunter.title_particle_sx = Number(Moghunter.parameters['X axis Speed'] || 1);

    Moghunter.title_particle_sy = Number(Moghunter.parameters['Y axis Speed'] || 1);

    Moghunter.title_particle_a = Number(Moghunter.parameters['A Speed'] || 0.02);

    Moghunter.title_particle_blend_mode  = Number(Moghunter.parameters['Blend Mode'] || 1);

    Moghunter.title_particle_anchor_x = Number(Moghunter.parameters['OX'] || 1.0);

    Moghunter.title_particle_anchor_y = Number(Moghunter.parameters['OY'] || 1.0);

    Moghunter.title_particle_circle = (Moghunter.parameters['Magic Circle Visible'] || true);

    Moghunter.title_particle_circle_x = Number(Moghunter.parameters['Magic Circle OX'] || 0);

    Moghunter.title_particle_circle_y = Number(Moghunter.parameters['Magic Circle OY'] || 0);

    Moghunter.title_particle_circle_a = Number(Moghunter.parameters['Magic Circle A Speed'] || 0.01);

    Moghunter.title_particle_circle_blend = Number(Moghunter.parameters['Magic Circle Blend Type'] || 1);



//=============================================================================

// ** Scene Title

//============================================================================= 



//==============================

// * Create

// * 重写Scene_Title原型中createBackground

// * 新增create_particles、create_magic_circle

//==============================

var _alias_mog_title_particles_createBackground = Scene_Title.prototype.createBackground;

Scene_Title.prototype.createBackground = function() {   

    _alias_mog_title_particles_createBackground.call(this);

    this.create_particles(); //创建粒子

    this.create_magic_circle(); //创建魔法圈

  };



//==============================

// * Update

// * 重写Scene_Title原型中update

// * 新增update_particles、update_magic_circle

//==============================

var _alias_mog_title_particles_update = Scene_Title.prototype.update;

Scene_Title.prototype.update = function() {

    _alias_mog_title_particles_update.call(this);

    this.update_particles(); //更新粒子

    this.update_magic_circle(); //更新魔法圈

};  



//==============================

// * Create Particles

//==============================

Scene_Title.prototype.create_particles = function() {

    var _sprite_particles_img = ImageManager.loadTitle2("Particles"); //粒子图片img\titles2\Particles.png

    this._sprite_particles = [];

    this._sprite_particles_data = [];   

    for (i = 0; i < Moghunter.title_particle_number; i++){ //title_particle_number粒子数量,默认25

      this._sprite_particles.push(new Sprite(_sprite_particles_img));

      this.addChild(this._sprite_particles[i]);

      this._sprite_particles_data[i] = []

      this.reset_particles(i);

      this._sprite_particles[i].x = Math.floor((Math.random() * Graphics.boxWidth));

      this._sprite_particles[i].y = Math.floor((Math.random() * Graphics.boxHeight));

      this._sprite_particles[i].opacity = 0;

      this._sprite_particles[i].anchor.x = Moghunter.title_particle_anchor_x;

      this._sprite_particles[i].anchor.y = Moghunter.title_particle_anchor_y;

      this._sprite_particles[i].blendMode = Moghunter.title_particle_blend_mode;

    };

};



//==============================

// * Reset Particles

// * 重置粒子

//==============================    

Scene_Title.prototype.reset_particles = function(i) {

    this._sprite_particles_data[i][0] = Math.floor((Math.random() * 2) * Moghunter.title_particle_sx) //x轴移动速度title_particle_sx

    this._sprite_particles_data[i][1] = Math.floor((Math.random() * 2) * Moghunter.title_particle_sy) //y轴移动速度title_particle_sy

    this._sprite_particles_data[i][2] = ((Math.random() * Moghunter.title_particle_a)); //粒子角速度

    this._sprite_particles[i].opacity = 0;

    this._sprite_particles[i].x = Math.floor((Math.random() * Graphics.boxWidth));

    var pz = ((Math.random() * 0.5) * 1);

    this._sprite_particles[i].scale = new PIXI.Point(0.5 + Number(pz), 0.5 + Number(pz));

    /**

     * y轴速度的正负值,决定粒子初始位置

     */

    if (Moghunter.title_particle_sy < 0) {

        this._sprite_particles[i].y = Graphics.boxHeight + this._sprite_particles[i].height * 2;

    }

    else if (Moghunter.title_particle_sy > 0)

    {

        this._sprite_particles[i].y = -this._sprite_particles[i].height * 2;

    }

    else {

        this._sprite_particles[i].y = Math.floor((Math.random() * Graphics.boxHeight));

    }

    if (this._sprite_particles_data[i][0] == 0 && this._sprite_particles_data[i][1] == 0) {

        this._sprite_particles[i].x = -this._sprite_particles[i].width * 5;

        this._sprite_particles_data[i][0] = 9999;

        this._sprite_particles_data[i][1] = 9999;

    };

}

//==============================

// * Reset Particles C

// * 粒子重置检测

//==============================    

Scene_Title.prototype.reset_particles_c = function(i) {

    //if (this._sprite_particles_data[i] == null) {return false};

    if (this._sprite_particles[i].x < -this._sprite_particles[i].width * 2 || this._sprite_particles[i].x > Graphics.boxWidth + this._sprite_particles[i].width * 2) {return true};

    if (this._sprite_particles[i].y < -this._sprite_particles[i].height * 2 || this._sprite_particles[i].y > Graphics.boxHeight + this._sprite_particles[i].height * 2 ) {return true};

    return false;

}

//==============================

// * Update Particles

// * 横纵向移动、透明度改变、转动

//==============================

Scene_Title.prototype.update_particles = function() {   

   for (var i = 0; i < this._sprite_particles.length; i++) {

        this._sprite_particles[i].x += this._sprite_particles_data[i][0];

        this._sprite_particles[i].y += this._sprite_particles_data[i][1];

        this._sprite_particles[i].opacity += 2;

        this._sprite_particles[i].rotation += this._sprite_particles_data[i][2];

        if (this.reset_particles_c(i)) { this.reset_particles(i);};

    };

};

//==============================

// * Create Magic Circle

// * 创建魔法圈

//==============================

Scene_Title.prototype.create_magic_circle = function() {

    if (Moghunter.title_particle_circle != "true") {return};

    this._sprite_mgc = new Sprite(ImageManager.loadTitle2("Magic_Circle")); //

    this._sprite_mgc.x = Moghunter.title_particle_circle_x;

    this._sprite_mgc.y = Moghunter.title_particle_circle_y;

    this._sprite_mgc.anchor.x = 0.5;

    this._sprite_mgc.anchor.y = 0.5;

    this._sprite_mgc.opacity = 0;

    this._sprite_mgc.blendMode = Moghunter.title_particle_circle_blend;

    this.addChild(this._sprite_mgc);

}

//==============================

// * Update Magic Circle

// * 魔法圈更新(转动、透明度改变)

//==============================

Scene_Title.prototype.update_magic_circle = function() {

    if (Moghunter.title_particle_circle != "true") {return};

    this._sprite_mgc.rotation += Moghunter.title_particle_circle_a;

    this._sprite_mgc.opacity += 3;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。