じ☆ve冰风 发表于 2024-2-13 12:40:57

横版战斗中按纵向格子依次排序敌群。

JAVASCRIPT 代码下载

/*:
* 原理:
* 把敌人当成格子,根据纵向绘制横向。
* 缺点:
* 1.每个敌人都需要添加注释,否则这个敌人会失踪……
* 例如:
* 2.在敌群添加敌人时必须恰好填满每列最大格子数。
* 例如:一列规定为4个格子时,依次放一个占1个格子的敌人+一个占2个格子的敌人+一个占1个格子的敌人则视为填满这一列。
*       若依次放三个占1个格子的敌人+一个占2个格子的敌人则超出这列的最大格子数,会发生诡异的排列。
* @author XMJL
* @plugindescsort troop as grid.
*
* @param EnemyColGrid
* @default 4
*
* @param EnemyGridWidth
* @default 200
*
* @param EnemyGridHeight
* @default 150
*
* @param ScreenLeft
* @default 100
*
* @param ScreenTop
* @default 100
*/
(function()
{
    var param = PluginManager.parameters('XMJL_SortEnemyGrid');
    var EnemyColGrid=Number(param['EnemyColGrid']);
    var EnemyGridWidth=Number(param['EnemyGridWidth']);
    var EnemyGridHeight=Number(param['EnemyGridHeight']);
    var ScreenLeft=Number(param['ScreenLeft']);
    var ScreenTop=Number(param['ScreenTop']);
    var EnemyType;
    var FillFull;
    var _Game_Enemy_initMembers=Game_Enemy.prototype.initMembers;
    Game_Enemy.prototype.initMembers=function()
    {
      _Game_Enemy_initMembers.call(this);
      EnemyType=new Array();
      FillFull=0;
    }
    Game_Enemy.prototype.screenX = function()
    {
      if($gameSystem.isSideView())
      return ScreenLeft+FillFull*EnemyGridWidth;
      else
      return this._screenX;
    };

   Game_Enemy.prototype.screenY = function() {
          if($gameSystem.isSideView())
          {
            var index=this.index();
            var enemy=this.enemy();
            var type= Number(enemy.meta.EnemyGrid);
            var lockAnchor=type*EnemyGridHeight/2;
            var lastgrid=XMJL_caluEnemyGrid(index,type);
            if(lastgrid==0)
                  return ScreenTop+lockAnchor;
            else
                  return ScreenTop+lastgrid*EnemyGridHeight+lockAnchor;
          }
          else
          return this._screenY;
    };
    var XMJL_caluEnemyGrid=function(index,type)
    {
      var sum;
         if(index==0)
         {
             sum=0;
             EnemyType=type;
             return 0;
         }
         else
         {
             sum=EnemyType+type;
             if(sum>=EnemyColGrid)
             {
               FillFull++;
               EnemyType=sum%EnemyColGrid;
             }
             else
             EnemyType=sum;
             return EnemyType;
         }
    }
})();

说明

诡异的排列


绘制效果:
https://rpg.blue/data/attachment/forum/201601/11/161624daht3whq5qldtuhe.jpg
             本帖来自P1论坛作者夏末渐离,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=388297若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
页: [1]
查看完整版本: 横版战斗中按纵向格子依次排序敌群。