仮RPGの進捗ノート20250120-20250126
仮RPGの進捗を記載するノートです。20250120-20250126分。
仮RPGの進捗を記載するノートです。20241223-20241229分。
//============================================================================= // TT_InvisibleCharacter.js // ---------------------------------------------------------------------------- // Copyright (c) 2024 たくろう_りらっくすーぷ // This software is released under the MIT License. // http://opensource.org/licenses/mit-license.php // ---------------------------------------------------------------------------- // Last Updated: 2024/12/25 // // Version // 1.0.0 2024/12/25 初版 // ---------------------------------------------------------------------------- // [Blog] : https://re-lacksoup-recipenote.bullet.site/ // [X(Twitter)]: https://x.com/relacksoup //============================================================================= /*:ja * @plugindesc キャラクターの一部を非表示にするプラグインです。 (Version 1.0.0) * @author たくろう_りらっくすーぷ * * @help キャラクターの一部を非表示にするプラグインです。 (Version 1.0.0) * * このプラグインは、プレイヤー、フォロワー、イベントの一部を非表示にする機能を提供します。 * 上部または下部から指定したパーセンテージ分を非表示にすることができます。 * * 使用方法: * 1. このプラグインをプロジェクトに追加します。 * 2. プラグインコマンドを使用して、キャラクターの一部を非表示にします。 * * ◆プラグインコマンド * HideCharacterPart [キャラクターID] [パーセンテージ] * 指定したキャラクターの一部を非表示にします。 * * ShowCharacterFull [キャラクターID] * 指定したキャラクターを完全に表示します。 * * キャラクターIDは以下の通りです: * -1: プレイヤー * -2, -3, ...: フォロワー(-2が1番目のフォロワー、-3が2番目のフォロワー、...) * 0: このイベント * 1以上: イベントID * * パーセンテージは -100 から 100 の間の値を指定します: * 正の値: 上からX%を非表示にします。 * 負の値: 下からX%を非表示にします。 * 例: * 75 -> 上から75%を非表示 * -75 -> 下から75%を非表示 * * 使用例: * HideCharacterPart -1 75 # プレイヤーの上から75%を非表示にします。 * HideCharacterPart 10 -50 # イベントID 10の下から50%を非表示にします。 * HideCharacterPart -2 30 # 1番目のフォロワーの上から30%を非表示にします。 * ShowCharacterFull 0 # このイベントを完全に表示します。 * * ◆注意 * 他プラグインとの競合については十分に検証されていません。 * 使用する際は、事前にテストプレイで動作確認することをおすすめします。 * */ (function() { var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand; Game_Interpreter.prototype.pluginCommand = function(command, args) { _Game_Interpreter_pluginCommand.call(this, command, args); if (command === 'HideCharacterPart') { var characterId = parseInt(args[0]); var percentage = parseInt(args[1]); this.getCharacter(characterId).setPartialHidden(percentage); } else if (command === 'ShowCharacterFull') { var characterId = parseInt(args[0]); this.getCharacter(characterId).setPartialHidden(0); } }; Game_Interpreter.prototype.getCharacter = function(param) { if (param === -1) { return $gamePlayer; } else if (param < -1) { return $gamePlayer.followers().follower(Math.abs(param) - 2); } else if (param === 0) { return this.character(0); } else { return $gameMap.event(param); } }; var _Game_CharacterBase_initMembers = Game_CharacterBase.prototype.initMembers; Game_CharacterBase.prototype.initMembers = function() { _Game_CharacterBase_initMembers.call(this); this._partialHidden = 0; }; Game_CharacterBase.prototype.setPartialHidden = function(percentage) { this._partialHidden = percentage.clamp(-100, 100); }; var _Sprite_Character_updateCharacterFrame = Sprite_Character.prototype.updateCharacterFrame; Sprite_Character.prototype.updateCharacterFrame = function() { _Sprite_Character_updateCharacterFrame.call(this); if (this._character._partialHidden !== 0) { var pw = this.patternWidth(); var ph = this.patternHeight(); var sx = (this.characterBlockX() + this.characterPatternX()) * pw; var sy = (this.characterBlockY() + this.characterPatternY()) * ph; var hiddenPixels = Math.floor(Math.abs(this._character._partialHidden) * ph / 100); if (this._character._partialHidden > 0) { // 上から非表示 this.setFrame(sx, sy + hiddenPixels, pw, ph - hiddenPixels); } else if (this._character._partialHidden < 0) { // 下から非表示 this.setFrame(sx, sy, pw, ph - hiddenPixels); } } }; var _Sprite_Character_updatePosition = Sprite_Character.prototype.updatePosition; Sprite_Character.prototype.updatePosition = function() { _Sprite_Character_updatePosition.call(this); if (this._character._partialHidden > 0) { var hiddenPixels = Math.floor(this._character._partialHidden * this.patternHeight() / 100); this.y -= hiddenPixels / 2; } }; })();