查看: 4083|回复: 3

[有事请教] 如何在敌人身上循环播放动画

[复制链接]
梦石
0
星屑
2615
在线时间
309 小时
注册时间
2014-3-23
回帖
76
发表于 2020-7-25 19:26:16 | 显示全部楼层 |阅读模式

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

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

×
大概想做一下敌人的动态待机效果,但是用了srd不支持yep,排版会出大问题。有没有前辈知道怎么做到让战斗时,循环显示动画在敌人上且不影响游戏的。直接循环播放动画的话会卡住、
这里是弗利沙漠。没啥技术的爱好者。
梦石
0
星屑
1343
在线时间
153 小时
注册时间
2020-4-26
回帖
146
发表于 2020-7-26 06:39:48 | 显示全部楼层
根據其原理,好像不會有太大的困難,行走圖、戰鬥圖的播放,是根據目前的格數(pattern)來設置遮罩(setFrame),決定要顯示圖片哪一個部分,即使在一般的精靈(sprite),像原本預設的靜止敵人戰鬥圖,也會使用setFrame,只是範圍設置成全部顯示,因此只要定時刷新pattern,然後依照著修改setFrame,就可以達成待機等等的動畫,因為都是同一張圖!不用改變,就很舒服

点评

可以去看一下Sprite_Actor他跟敵人戰鬥者原型一樣,只是加了setFrame就讓戰鬥圖動起來了  发表于 2020-7-26 06:42
回复

使用道具 举报

梦石
0
星屑
34465
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2020-7-26 08:21:21 | 显示全部楼层
本帖最后由 芯☆淡茹水 于 2020-7-26 09:18 编辑

Window_BattleLog 进程会等待动画的播放结束,也就是你所说的 卡住 。
如果你有循环动画功能的话,可以尝试把对象播放循环动画时的 isAnimationPlaying 改成 false 。


以前就预先 pia 了个循环动画,但是只有基本功能,至于谁播放循环动画,什么时候播放,什么时候停止,,,
这些只有根据实际使用情况自己编写。
[pre lang="javascript"]//=================================================================================================
// Loop_Animation.js
//=================================================================================================
/*:
* @plugindesc 循环动画。
* @author 芯☆淡茹水
* @help
*
* Sprite_Base 以及其子类,皆可以播放循环动画,以下代称为 objSprite 。
*
* 开始循环动画: objSprite.startLoopAnimation(animationId, mirror, delay);
* animationId :动画ID。
* mirror :是否镜像。
* delay :延迟帧数。
*
* 停止循环动画: objSprite.stopLoopAnimation(animationId);
*
* 是否正在播放某个循环动画: objSprite.isLoopAnimationPlaying(animationId);
*
*/
//=================================================================================================
;(function(){
//=================================================================================================
var Sprite_Base_initialize = Sprite_Base.prototype.initialize;
Sprite_Base.prototype.initialize = function() {
    Sprite_Base_initialize.call(this);
    this._loopAnimationSprites = [];
};
Sprite_Base.prototype.startLoopAnimation = function(animationId, mirror, delay) {
    if (!$dataAnimations[animationId] || this.isLoopAnimationPlaying(animationId)) return;
    var sprite = new Sprite_LoopAnimation();
    sprite.setup(this._effectTarget, animationId, mirror, delay);
    this.parent.addChild(sprite);
    this._loopAnimationSprites.push(sprite);
};
Sprite_Base.prototype.stopLoopAnimation = function(animationId) {
    var anmSprite = this._loopAnimationSprites.filter(function(sprite){
        return sprite.id() === animationId;
    }).shift();
    if (anmSprite) {
        var index = this._loopAnimationSprites.indexOf(anmSprite);
        anmSprite.remove();
        this._loopAnimationSprites.splice(index, 1);
    }
};
Sprite_Base.prototype.isLoopAnimationPlaying = function(animationId) {
    return this._loopAnimationSprites.some(function(anmSprite){
        return anmSprite.id() === animationId;
    });
};
//=================================================================================================
function Sprite_LoopAnimation() {
    this.initialize.apply(this, arguments);
}
Sprite_LoopAnimation.prototype = Object.create(Sprite_Animation.prototype);
Sprite_LoopAnimation.prototype.constructor = Sprite_LoopAnimation;
Sprite_LoopAnimation.prototype.id = function() {
    return this._animationId;
};
Sprite_LoopAnimation.prototype.setup = function(target, animationId, mirror, delay) {
    this._animationId = animationId;
    var animation = $dataAnimations[animationId];
    Sprite_Animation.prototype.setup.call(this, target, animation, mirror, delay);
};
Sprite_LoopAnimation.prototype.isPlaying = function() {
    return true;
};
Sprite_LoopAnimation.prototype.updateMain = function() {
    if (this._duration <= 0) {
        this._target.setBlendColor([0, 0, 0, 0]);
        this._target.show();
        this.setupDuration();
    } else Sprite_Animation.prototype.updateMain.call(this);
};
//=================================================================================================
}()); // end
//=================================================================================================[/pre]
xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部