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

Project1

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

[有事请教] 问一个关于VisualStateFX显示状态动作的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
220
在线时间
135 小时
注册时间
2008-4-30
帖子
106
跳转到指定楼层
1
发表于 2018-11-26 12:35:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
不才最近在研究VisualStateFX和龙骨插件的结合
发现一个问题:
对于主角角色,会用设置好的骨骼动画显示状态动画
但是对于敌人的话就无法以骨骼动画显示状态动画 但是技能序列没有问题
所以我想问一下是我自己的脚本发生冲突还是说VisualStateFX无法显示敌人的骨骼动画呢
十分感谢!

Lv2.观梦者

梦石
0
星屑
646
在线时间
184 小时
注册时间
2015-9-11
帖子
20
2
发表于 2018-11-26 14:22:29 | 只看该作者
                     
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
220
在线时间
135 小时
注册时间
2008-4-30
帖子
106
3
 楼主| 发表于 2018-11-28 16:15:11 | 只看该作者
本帖最后由 yihe74 于 2018-11-28 17:54 编辑

最终问题解决了
原因比较简单 因为在原版中敌人没有动作,所以在VisualFX中沿用用了另一插件AnimatedSVEnmemies里边对于敌人动作的定义
那么在这里我们首先要让VisualFX承认他是一个动态有动画的敌人,删去了if (!this._svBattlerEnabled) return;
之后 我在龙骨插件的脚本中仿照对于Actor动作的定义把Enemy.startMotion定义了一遍。问题就解决了。
dragonBonesIntegration.Sprite_Enemy_prototype_startMotion =
  Sprite_Enemy.prototype.startMotion;
Sprite_Enemy.prototype.startMotion = function(motionType) {
  //only play dragonbone animation if dragonboneIndex variable is valid
  if (this._enemy.hasDragonBone === true) {
    if (this._enemy.lastMotionType !== motionType) {       
      dragonBonesIntegration.PlayAnimationOnBattler(this._enemy, motionType);
      this._enemy.lastMotionType = motionType;
    }
  } else {
    //console.log("Vanilla startMotion: " + this._actor._name + " motion = " +
    //motionType);
    dragonBonesIntegration.Sprite_Enemy_prototype_startMotion.call(this,
      motionType);
  }
};
不过有一个小问题 就是角色受到攻击以后动画会消失掉
那么就牵扯到龙骨插件里有一小段代码是说敌人完成动作后恢复walk动作的
我目前没什么太好的办法 就一个一个把他们分情况if进去了:
switch (event.type) {
            case dragonBones.EventObject.COMPLETE:
              //if actor is not knocked out
              if (this._states.contains(1) === false) {
                                  if (this._states.contains(11) ) {dragonBonesIntegration.PlayAnimationOnBattler(this, "Idle2");
                                  } else if (this._states.contains(12) ) {dragonBonesIntegration.PlayAnimationOnBattler(this, "Injury");
                                  } else{dragonBonesIntegration.PlayAnimationOnBattler(this, "walk");                                          
                                  }
                //var idleAnimation = this.dragonboneAnimation['walk'];
                //dragonBonesIntegration.ArmatureDatabaseEnemy
                //[this.dragonboneIndex].animation.play(idleAnimation);
               
              } else {
                dragonBonesIntegration.Game_Enemy_prototype_performCollapse.call(this);
              };
              break;
            default:
              //nothing
          }        
这就是说在敌人存活的情况下
11号状态显示Idle2 12号injury 其他 walk。
最后,这只是一点抛砖引玉 肯定有许多不足之处,欢迎指教
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-2 17:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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