RPG Maker MV 仿新仙劍 戰斗場景UI 九
- 前言
- 角色戰斗精靈
- 精靈圖設置
- 攻擊
- 戰斗背景圖
前言
前段天研究并完成了主角人物行走圖部分的開發,完成了對應的8方向行走,及精靈的展示。現在開始重新回到戰斗場景的開發中,回顧下,已完成功能:
- 戰斗菜單
- 一級戰斗菜單
- 二級戰斗菜單
- 角色狀態顯示
- 物品及法術窗口
- 進入狀態及裝備場景
未完成的功能:
- 角色戰斗精靈
- 投擲窗口
- 合擊、防御、圍攻
- 角色站位
- 戰斗動畫(法術及各操作動畫)
- 經驗及物品的消息顯示
- 戰斗背景圖
- 敵我選中
- 傷害顯示
現在發現還有這么多的功能還未完成,真是給程序員丟臉!!!給RPGMakerMV這個軟件的使用人丟臉!!!
角色戰斗精靈
今天開始進行角色戰斗精靈的開發,有預感這又是一次艱難的旅程。。。
精靈圖設置
通過這個精靈圖的設置來控制包括攻擊、防御、投擲、等人物精靈的狀態的情況,其中沒有合擊,沒有合擊的原因是,由于合擊是多個人物的操作,不方便放進去進行處理,因此仿照仙劍2的方式來處理,直接置空然后釋放技能即可。當然由于還沒有做到那里,因此現在只能算是口嗨!
//更新圖片
Sprite_Actor.prototype.updateBitmap = function() {Sprite_Battler.prototype.updateBitmap.call(this);var name = this._actor.battlerName();if (this._battlerName !== name) {this._battlerName = name;this._mainSprite.bitmap = ImageManager.loadSvActor(name);}
};
//更新戰斗幀
Sprite_Actor.prototype.updateFrame = function() {Sprite_Battler.prototype.updateFrame.call(this);var bitmap = this._mainSprite.bitmap;if (bitmap) {var name=this._actor.battlerName();var motionIndex=this._motion?this._motion[name].index:0;this._motionIndexCount = motionIndex.length;var pattern = this._pattern < this._motionIndexCount ? this._pattern : 0;var cw = bitmap.width;var ch = bitmap.height / 12;var cx = 0;var cy = motionIndex[pattern];this._mainSprite.setFrame(cx * cw, cy * ch, cw, ch);}
};
對應更新角色戰斗的圖片及戰斗序列幀。
攻擊
Game_Actor.prototype.performMissile = function() {var weapons = this.weapons();//獲取角色裝備的武器列表var wtypeId = weapons[0] ? weapons[0].wtypeId : 0;//從第一個武器中獲取武器類型IDvar attackMotion = $dataSystem.attackMotions[wtypeId];if (attackMotion) {if (attackMotion.type === 0) {this.requestMotion('thrust');} else if (attackMotion.type === 1) {this.requestMotion('swing');} else if (attackMotion.type === 2) {this.requestMotion('missile');}this.startWeaponAnimation(attackMotion.weaponImageId);}
};
Game_Actor.prototype.performAttack = function() {
this.requestMotion(‘attack’);
};
現在攻擊的角色對象方法中不再有一大堆的操作,就單純的只有一條就是設置請求運動中攻擊動畫。
那原來的一大堆的代碼是什么呢?
就在這上面投擲的代碼中,由于投擲還沒有做對應的功能和操作因此可以看到里面的攻擊的源碼。
這段源碼中第一行是獲取的角色的武器列表,第二行是從武器列表中獲取獲取武器對應的類型id,由于列表是數組因此需要獲取里面的第一個元素,雖然里面也沒有其他的元素就是了!
第三行獲取攻擊的動作,根據武器類型id獲取對應的動作編號,這部分是寫死在system的json文件中的,由于我沒有想要修改的意向,因此不對其進行操作。后面就是根據類型的值選擇是空手,武器揮舞,或投擲了,最后一行是對應的調用使用武器的代碼,由于仙劍的精靈自帶武器,或直接空手,因此我也不需要動用其他的操作。
從這可以看角色進行了相應的戰斗動作,由于沒有進行合理的位移因此沒有到正確的位置進行攻擊。
戰斗背景圖
簡單處理戰斗背景的話可以在RPGMakerMV中直接在對應地圖上的編輯中指定戰斗的背景圖片。
具體步驟如下:
- 在編輯器窗口中左下角處的找到并點擊對應地圖,右鍵菜單找到第一個編輯選項。
- 在彈出的地圖屬性中窗口中,左邊的基本設置欄中找到指定戰斗背景圖選項,并勾選上,這樣就可以在下面的下拉列表中選擇對應的戰斗背景圖片了。
這里面可以一次性進行兩個戰斗背景的設置,這里不再展示如何選中。
但很快就發現設置的戰斗背景圖和原版游戲有區別,通過詳細的對比后發現圖片區域下移了一些,檢查源碼是戰斗精靈集中背景精靈使用了平鋪精靈的問題,后直接改成了普通精靈后完成效果。
RMMV 仿仙劍的效果:
原版仙劍的效果:
去掉UI的遮擋和人物的站位問題后,可以看出是一致的。當然后面嘗試了大招的縮放效果,可惜沒有實現出來,后期得好好的研究下。