【RPG Maker MV 仿新仙剑 战斗场景UI (一)】

战斗场景制作

RPG Maker 中战斗场景的UI是比较经典的日式RPG的UI布局,现在尝试将它变成仙剑这样的布局看看。。。

原版仙剑战斗UI

这里只截图了开始的战斗UI其余部分会在制作时放出
原版仙剑战斗UI

原版RPG Maker MV战斗UI

RMMV战斗UI
初始看着还是挺简陋的,当然现在是没有开启侧视战斗场景的。
侧视战斗
从这里就可以看出需要改的地方有不少了。
有个问题,由于之前法术的菜单已经修改了,因此使用会进行报错,需要进行名称的修改,虽然在法术的场景中是正常的,但在战斗的法术中就会出现错误找不到对应的初始化方法,这应该就是名称导致的解释器找不到对应的方法,因为继承时是按照原有的类进行继承的,所以需要进行名称上的变更,这点也是通过好几次调试发现就是过不去才想起来的!!!
由于涉及到的窗口过多,因此进行分场景及窗口来进行更新吧!

启航

战斗的菜单可以简单划分为战斗指令菜单、额外战斗指令菜单、物品操作菜单、人物状态菜单这几项,另外的物品使用、物品装备、法术使用、物品投掷、人物具体状态菜单等,可以用额外场景进行实现或后期修改对应的菜单项完成UI操作。

战斗菜单

战斗指令菜单中有攻击、合击、法术、其他,这四个选项,其中合击是优先级最高的操作,后期会进行正式战斗的测试时进行完善,现在只会用于普通攻击的操作。
初期完成菜单图片:
战斗指令
战斗场景代码:

function Pal_Scene_Battle() {
   
    this.initialize.apply(this, arguments);
}
Pal_Scene_Battle.prototype = Object.create(Scene_Base.prototype);
Pal_Scene_Battle.prototype.constructor = Pal_Scene_Battle;

Pal_Scene_Battle.prototype.initialize = function() {
   
    Scene_Base.prototype.initialize.call(this);
};
Pal_Scene_Battle.prototype.create = function() {
   
    Scene_Base.prototype.create.call(this);
    this.createDisplayObjects();
};
Pal_Scene_Battle.prototype.start = function() {
   
    Scene_Base.prototype.start.call(this);
    this.startFadeIn(this.fadeSpeed(), false);
    BattleManager.playBattleBgm();
    BattleManager.startBattle();
};
Pal_Scene_Battle.prototype.update = function() {
   
    var active = this.isActive();
    $gameTimer.update(active);
    $gameScreen.update();
    this.updateStatusWindow();
    this.updateWindowPositions();
    if (active && !this.isBusy()) {
   
        this.updateBattleProcess();
    }
    Scene_Base.prototype.update.call(this);
};
/** 更新作战流程
 * 
 */
Pal_Scene_Battle.prototype.updateBattleProcess = function() {
   
    if (!this.isAnyInputWindowActive() || BattleManager.isAborting() ||
            BattleManager.isBattleEnd()) {
   
        BattleManager.update();
        this.changeInputWindow();
    }
};
/** 是否有任何输入窗口处于活动状态
 * 
 */
Pal_Scene_Battle.prototype.isAnyInputWindowActive = function() {
   
    return (this._partyCommandWindow.active ||
            this._actorCommandWindow.active ||
            this._skillWindow.active ||
            this._itemWindow.active ||
            this._actorWindow.active ||
            this._enemyWindow.active);
};
/** 更改输入窗口
 *  
 */
Pal_Scene_Battle.prototype.changeInputWindow = function() {
   
    if (BattleManager.isInputting()) {
   
        if (BattleManager.actor()) {
   
            this.startActorCommandSelection();
        } else {
   
            this.startPartyCommandSelection();
        }
    } else {
   
        this.endCommandSelection();
    }
};

//停止
Pal_Scene_Battle.prototype.stop = function() {
   
    Scene_Base.prototype.stop.call(this);
    if (this.needsSlowFadeOut()) {
   
        this.startFadeOut(this.slowFadeSpeed(), false);
    } else {
   
        this.startFadeOut(this.fadeSpeed(), false);
    }
    this._statusWindow.close();
    this._partyCommandWindow.close();
    this._actorCommandWindow.close();
};
/** 结束战斗
 * 
 */
Pal_Scene_Battle.prototype.terminate = function() {
   
    Scene_Base.prototype.terminate.call(this);
    $gameParty.onBattleEnd();
    $gameTroop.onBattleEnd();
    AudioManager.stopMe();
    ImageManager.clearRequest();
};

//需要慢速淡出
【实例教程1】怎样编写个插件? 1. 插件的注释与定义参数 2. 读取插件参数 3. 插件指令的实现 【实例教程2】制作个启动画面 1. 从哪里开始? 2. 创建启动画面的场景类 【实例教程3】玩转菜单初级篇 1. 给各个菜单界面添加背景 2. 让背景滚动起来 3. 在主菜单界面增加自定义菜单:改名 4. 在主菜单界面移除菜单命令 5. 在主菜单界面增加个自定义窗口 【实例教程4】玩转标题画面 1. 美化游戏标题 2. 让背景动起来 3. 自定义标题菜单 4. 美化菜单 【实例教程5】制作小游戏:坦克大战(上) 1. 游戏结构及流程介绍 2. 相关素材资源的下载和使用 3. 基础知识:音效的播放 4. 基础知识:精灵表的切帧 5. 基础知识:使用MV中的动画 6. Scene_TankWarTitle类解析 7. Sprite_Bullet类解析 8. Sprite_Explode类解析 9. Sprite_Tank类解析 10. Sprite_Enemy类解析 11. Scene_TankWar类解析 12. Scene_TankWarGameOver类解析 【实例教程6】存档的加密解密与保护 1. 找出MV存档和读档的方式 2. 制作MV存档的修改器 3. 如何保护存档? 4. 制作个存档保护插件 【实例教程7】制作个传送插件 1. 传送插件的主要功能 2. 将自定义数据保存到存档中 3. meta数据的使用 4. 使用地图备注登记传送点 5. 在插件中解析并记录传送点 6. 使用地图备注登记多个传送点并在插件中记录 7. 制作传送点选取窗口显示传送点数据 8. 将物品或技能标记为传送物品、传送技能 9. 显示传送动画实现传送功能 10. 禁止使用传送道具或传送技能 11. 实现插件命令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值