仮RPGの進捗ノート20241223-20241229

仮RPGの進捗を記載するノートです。20241223-20241229分。

Dec 22, 2024

はじめに

日々の進捗をメモしています。
 

20241225 キャラクターを一部非表示にする機能について、イベントやフォロワーも対象にできるように別プラグインを作り直した

 
以前作ったプラグイン
 
上記プラグインだとプレイヤー以外を対象にできなかった。
イベントやフォロワーでも一部非表示にしたい場面が出てきて、プラグインを作りなおした。
 
//============================================================================= // 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; } }; })();

今週のまとめ

  • 年末で作業おさめ
 

今後やりたいこと

  • 2025年も継続してゲーム作れたら嬉しい
 

タスク

SmartPath.js で移動するNPCを邪魔する物を置くことで、目的の位置へ誘導するゲーム作れそう
わんことたぬきでやったら楽しいかもね。
年始の時間があるときに一気に作ってもいいかもね。
光の方へ行こうすとする 死なないように誘導するイメージかもね。
だとしたらたぬきではなく天使かもね。
 
タップすることで本人と上下左右のキャラクターが右に90度回る
全員を正面に向けたらクリアなパズルゲーム