快捷导航
查看: 270|回复: 3

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

[复制链接]
会员等级

积分信息
金币:746
金钱:0
元宝:20
活跃:187
发电:0

荣誉勋章
热心会员优秀版主首批会员最佳新人

TA的角色
UID: 6 发表于 2023-2-17 11:33:40 | 显示全部楼层 |阅读模式
1.JPG 2.JPG 3JPG.JPG
以RMMZ为例,BUFF显示在角色的头顶位置,那如果敌人的图片尺寸过大,那BUFF的图标也会特别靠上。游玩体验就比较差。那如果对于不同的敌人,设置不同的BUFF位置,要如何实现咧?
先看默认的代码:
[JavaScript] 纯文本查看 复制代码
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这个函数做以下改动:
[JavaScript] 纯文本查看 复制代码
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仅仅是个标签名字,大家可以自由设置名称,与备注栏中保持一致即可。

评分

参与人数 1金币 +9 收起 理由
民族精神 + 9 赞一个!

查看全部评分

最近访客

回复 论坛版权

使用道具 举报

经验  75%

会员等级

积分信息
金币:255
金钱:2
元宝:5
活跃:121
发电:0

荣誉勋章
首批会员最佳新人

TA的角色

Rank: 3Rank: 3Rank: 3

UID: 4 发表于 2023-2-17 15:09:59 | 显示全部楼层
666
这个就很实用了
回复

使用道具 举报

文明发言,和谐互动
文明发言,和谐互动
您需要登录后才可以回帖 登录 | 加入民族

本版积分规则

论坛用工具

蓝凑云 hello图床 聚合图床 TinyPNG remove 代码测试 颜色代码 颜色代码2

Powered by Discuz!

© 2001-2013 Comsenz Inc.

实用工具

AI人工智能图片放大 图片无损放大 Deepl翻译器 百宝箱 孟坤工具箱 在线压缩图片 图片切圆角

您一共访问了本站 加载中...

Archiver|小黑屋|RPG民族

GMT+8, 2024-12-4 02:01 , Processed in 0.182324 second(s), 46 queries .

快速回复 返回顶部 返回列表