设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2427|回复: 10
打印 上一主题 下一主题

[有事请教] 怎么更改技能动画的层级?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3121
在线时间
238 小时
注册时间
2021-4-22
帖子
217
跳转到指定楼层
1
发表于 2022-3-25 02:27:06 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
技能动画都是显示在人物或敌人图的上层,我要做一些光环类的技能,但是动画会遮盖人物
有什么办法改变这个动画的层级? 让它在人物下层

Lv3.寻梦者

梦石
0
星屑
3121
在线时间
238 小时
注册时间
2021-4-22
帖子
217
10
 楼主| 发表于 2022-3-28 20:13:28 | 只看该作者
芯☆淡茹水 发表于 2022-3-28 08:52
是这样?
在动画名字里备注   , 这个动画就显示到人物脚下。

和VisuMZ_Battle Core有冲突...怎么办?

点评

不知道别人是怎么魔改的战斗,那就没办法了  发表于 2022-3-28 22:53
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3121
在线时间
238 小时
注册时间
2021-4-22
帖子
217
9
 楼主| 发表于 2022-3-28 19:48:09 | 只看该作者
芯☆淡茹水 发表于 2022-3-28 08:52
是这样?
在动画名字里备注   , 这个动画就显示到人物脚下。

谢谢大佬 解决了
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33471
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

8
发表于 2022-3-28 08:52:30 | 只看该作者
是这样?
在动画名字里备注 <Lower>  , 这个动画就显示到人物脚下。

JAVASCRIPT 代码复制
  1. //=================================================================================================
  2. ;(() => {
  3. //=================================================================================================
  4. Sprite_Animation.prototype.isLower = function() {
  5.     return this._animation && /<Lower>/.test(this._animation.name);
  6. };
  7. //=================================================================================================
  8. Sprite_AnimationMV.prototype.isLower = function() {
  9.     return this._animation && /<Lower>/.test(this._animation.name);
  10. };
  11. //=================================================================================================
  12. const XR_Spriteset_Battle_createBattleField = Spriteset_Battle.prototype.createBattleField;
  13. Spriteset_Battle.prototype.createBattleField = function() {
  14.     XR_Spriteset_Battle_createBattleField.call(this);
  15.     this._effectsContainer.lowerLayer = new Sprite();
  16.     this._effectsContainer.addChild(this._effectsContainer.lowerLayer);
  17.     this._effectsContainer.addChild = (child) => {
  18.         if (child && child.isLower && child.isLower()) {
  19.             this._effectsContainer.lowerLayer.addChild(child);
  20.         } else Sprite.prototype.addChild.call(this._effectsContainer, child);
  21.     };
  22.     this._effectsContainer.removeChild = (child) => {
  23.         if (child && child.isLower && child.isLower()) {
  24.             this._effectsContainer.lowerLayer.removeChild(child);
  25.         } else Sprite.prototype.removeChild.call(this._effectsContainer, child);
  26.     };
  27. };
  28. //=================================================================================================
  29. })();
  30. //=================================================================================================
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3121
在线时间
238 小时
注册时间
2021-4-22
帖子
217
7
 楼主| 发表于 2022-3-27 17:58:47 | 只看该作者
HM495 发表于 2022-3-26 20:06
我试了下可以啊
那个id是动画id 不是技能id 没填错吧

嗯 没填错
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6585
在线时间
1497 小时
注册时间
2013-12-3
帖子
321
6
发表于 2022-3-26 20:06:53 | 只看该作者
dabaxhei 发表于 2022-3-26 17:56
新建了个项目试了下,还是不行

我试了下可以啊
那个id是动画id 不是技能id 没填错吧
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3121
在线时间
238 小时
注册时间
2021-4-22
帖子
217
5
 楼主| 发表于 2022-3-26 17:56:45 | 只看该作者
HM495 发表于 2022-3-26 09:15
我只会比较暴力一点的做法
找到rmmz_sprites.js的Spriteset_Base.prototype.createAnimationSpri ...

新建了个项目试了下,还是不行
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6585
在线时间
1497 小时
注册时间
2013-12-3
帖子
321
4
发表于 2022-3-26 09:15:17 | 只看该作者
本帖最后由 HM495 于 2022-3-26 09:19 编辑
dabaxhei 发表于 2022-3-26 02:29
不会... 这个要怎么加


我只会比较暴力一点的做法
找到rmmz_sprites.js的Spriteset_Base.prototype.createAnimationSprite这个方法
大概在3267行

改成
  1. Spriteset_Base.prototype.createAnimationSprite = function(
  2.     targets, animation, mirror, delay
  3. ) {
  4.     const mv = this.isMVAnimation(animation);
  5.     const sprite = new (mv ? Sprite_AnimationMV : Sprite_Animation)();
  6.     const targetSprites = this.makeTargetSprites(targets);
  7.     const baseDelay = this.animationBaseDelay();
  8.     const previous = delay > baseDelay ? this.lastAnimationSprite() : null;
  9.     if (this.animationShouldMirror(targets[0])) {
  10.         mirror = !mirror;
  11.     }
  12.     sprite.targetObjects = targets;
  13.     sprite.setup(targetSprites, animation, mirror, delay, previous);

  14.     const lowerLayerAnimationList = [1,2,3,4];//数组里填你要显示在角色层之下的动画ID
  15.     sprite.z = lowerLayerAnimationList.includes(sprite._animation.id) ? 0 : 8;

  16.     this._effectsContainer.addChild(sprite);
  17.     this._animationSprites.push(sprite);
  18. };
复制代码


如果其他插件没动这段的话这样就行
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3121
在线时间
238 小时
注册时间
2021-4-22
帖子
217
3
 楼主| 发表于 2022-3-26 02:29:32 | 只看该作者
HM495 发表于 2022-3-25 22:58
给动画加个字段 根据这个字段调整Sprite_Animation类的.z
默认是8 改成0就到角色下层去了 ...

不会... 这个要怎么加
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6585
在线时间
1497 小时
注册时间
2013-12-3
帖子
321
2
发表于 2022-3-25 22:58:51 | 只看该作者
  1. Sprite_Animation.prototype.initMembers = function() {
  2.     this._targets = [];
  3.     this._animation = null;
  4.     this._mirror = false;
  5.     this._delay = 0;
  6.     this._previous = null;
  7.     this._effect = null;
  8.     this._handle = null;
  9.     this._playing = false;
  10.     this._started = false;
  11.     this._frameIndex = 0;
  12.     this._maxTimingFrames = 0;
  13.     this._flashColor = [0, 0, 0, 0];
  14.     this._flashDuration = 0;
  15.     this._viewportSize = 4096;
  16.     this.z = 8;
  17. };
复制代码


给动画加个字段 根据这个字段调整Sprite_Animation类的.z
默认是8 改成0就到角色下层去了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-23 19:29

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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