mz怎么扩展状态的遮罩动画
rpgmakermz吧
全部回复
仅看楼主
level 5
原版只有10个,有点太少了
2025年11月04日 07点11分 1
level 7
你说的遮罩动画是数据库、状态、基本设置、[侧视]遮罩这里啊。
这个我不知道,我只知道在地图上显示气泡和动画的脚本。
[星星月亮]
把img\system文件夹Balloon.png的图片大小本来是384*720
要是直接放大10倍到3840*7200会很奇怪,因为读取的行数的宽度和高度是固定的。
但是可以把384的宽度固定下来,高度随意,画上其他图片后是可以突破10个、15个上限的。
384/8=48,720/15=48,所以好像是48一行的高度,多少随意。
[星星月亮]
Sprite_Balloon.prototype.updateFrame = function() {
const w = 48;
const h = 48;
const sx = this.frameIndex() * w;
const sy = (this._balloonId - 1) * h;
this.setFrame(sx, sy, w, h);
};
上面这段好像就是气泡的关键代码了,改成下面这样可以一次性显示出来。
Sprite_Balloon.prototype.updateFrame = function() {
const w = 48*8; //注释,在这里可以把48改成48*8,可以把气泡一次性都显示出来
const h = 48;
const sx = this.frameIndex() * w;
const sy = (this._balloonId - 1) * h;
this.setFrame(sx, sy, w, h);
};
[星星月亮]
【MZ教程】NPC在地图中自动显示气泡事件 - 哔哩哔哩
bilibili.com/opus/706677937458380822?spm_id_from=333.1387.0.0
[星星月亮]
//本事件显示2号气泡,
$gameTemp.requestBalloon($gameMap.event(this.eventId()), 2);
//1号事件页显示2号气泡
$gameTemp.requestBalloon($gameMap.event(1), 2);
//玩家显示2号气泡
$gameTemp.requestBalloon($gamePlayer, 2);
[星星月亮]
//本事件显示2号动画
$gameTemp.requestAnimation([this.character(this._characterId)], 2);
也是本事件显示2号动画
$gameTemp.requestAnimation([this.character(0)], 2);
//1号事件页显示2号动画
$gameTemp.requestAnimation([this.character(1)], 2);
//玩家显示2号动画
$gameTemp.requestAnimation([$gamePlayer], 2);
//也是玩家显示2号动画
$gameTemp.requestAnimation([this.character(-1)], 2);
2025年12月05日 12点12分 2
level 7
//本事件显示36号动画,正常的播放顺序
$gameTemp.requestAnimation([this.character(this._characterId)], 36,0);
[星星月亮]
//本事件显示36号动画,倒放的播放顺序
$gameTemp.requestAnimation([this.character(this._characterId)], 36,1);
[星星月亮]
忘了这个了,播放动画的脚本还可以插入是正常的播放顺序还是倒放的播放顺序。
由于MV版和MZ版的数据库、动画里,36号都是歌曲,是从左到右播放的,所以拿36号来做测试比较明显。
[星星月亮]
打开js文件夹搜索$gameTemp.requestAnimation会出现3个结果分别是
$gameTemp.requestAnimation([character], params[1]);
$gameTemp.requestAnimation(targets, params[1]);
$gameTemp.requestAnimation(targets, animationId, mirror);
所以是不是镜像播放是代码里面自带的,但是事件指令的显示动画这里没有设置。
[星星月亮]
$gameTemp.requestAnimation([this.character(this._characterId)], 36,0);
this.setWaitMode("animation");
$gameTemp.requestAnimation([this.character(this._characterId)], 36,1);
this.setWaitMode("animation");
另外试一试把上面这个脚本放到脚本框,效果是两边向中间播放。
也可以把上面这四行的前两行和后两行分别放在两个脚本框里面,会左到右再右到左的循环。
[星星月亮]
另外,MZ版显示动画的脚本用到MV版好像会报错,应该是两个版本关于动画的代码大改了,所以脚本也不一样了。
非常好的脚本调用手册 - RPG Maker MV 讨论区 - Project1
在上面这个网页Ctrl+F搜索动画找到的这两个,第一个好像是播放影像,第二个好像是战斗场景的播放动画。
播放动画 Graphics.playVideo(path/name.ext);
显示战斗动画 $gameTroop.members()[enemyIndex].startAnimation(animationId, true/false, delayN);
[星星月亮]
this._character.requestAnimation(this._params[1]);
在MV版js文件夹搜索requestAnimation找到的上面这行好像就是在地图上播放动画的关键代码。
所以应该是这样写的,没有是否倒放的选项了。
//下面三个好像分别是MV版里面,本事件、1号事件、玩家播放36号动画的脚本
$gameMap.event(this.eventId()).requestAnimation(36);
$gameMap.event(1).requestAnimation(36);
$gamePlayer.requestAnimation(36);
2025年12月07日 11点12分 3
1