古树旋律 发表于 2023-2-17 11:33:40

自由调整敌人的BUFF显示位置(Y轴部分)


以RMMZ为例,BUFF显示在角色的头顶位置,那如果敌人的图片尺寸过大,那BUFF的图标也会特别靠上。游玩体验就比较差。那如果对于不同的敌人,设置不同的BUFF位置,要如何实现咧?
先看默认的代码:
Sprite_Enemy.prototype.updateStateSprite = function() {
    this._stateIconSprite.y = -Math.round((this.bitmap.height + 40) * 0.9);//图片的高度尺寸+40像素,再成0.9倍,再取整,得到BUFF的Y坐标
    if (this._stateIconSprite.y < 20 - this.y) {
      this._stateIconSprite.y = 20 - this.y;//强制设置Y在一个范围内
    }
};
这个this._stateIconSprite.y就是BUFF的Y坐标。可见默认的公式并不能满足我们所有的敌人图片。但又不能一杆子打翻一船。
于是我们可以借助数据库中敌人的备注栏,也就是META属性。
我们可以对Sprite_Enemy.prototype.updateStateSprite这个函数做以下改动:
Sprite_Enemy.prototype.updateStateSprite = function() {
      const offSetY = Number(this._battler.enemy().meta.MNKR_EnemyStateIconOffset || 0);
//定义一个offSetY变量,而这个变量数值通过enemy备注栏中MNKR_EnemyStateIconOffset后的数字来设置。
//例如在备注栏中<MNKR_EnemyStateIconOffset:200>
    this._stateIconSprite.y = -Math.round((this.bitmap.height + 40) * 0.9)+ offSetY;//向下偏移像素量offSetY
    if (this._stateIconSprite.y < 20 - this.y) {
      this._stateIconSprite.y = 20 - this.y;
    }
};
这个思路来自于MNKR系列插件,函数中MNKR_EnemyStateIconOffset仅仅是个标签名字,大家可以自由设置名称,与备注栏中保持一致即可。

民族精神 发表于 2023-2-17 15:09:59

666
这个就很实用了
页: [1]
查看完整版本: 自由调整敌人的BUFF显示位置(Y轴部分)