赞 | 1 |
VIP | 0 |
好人卡 | 1 |
积分 | 2 |
经验 | 4192 |
最后登录 | 2023-1-5 |
在线时间 | 135 小时 |
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。
最后,这只是一点抛砖引玉 肯定有许多不足之处,欢迎指教 |
|