忍者ブログ
windowsやFlash のゲーム作ったりとか。
RPGツクールMV用プラグインであるところの
神鏡学斗さんのSRPGコンバータMVの使い方覚書です。

<製作の流れ>
神鏡学斗さんのSRPGコンバータMVをゲット。
②サンプルゲームをプレイして、何が出来るのかをチェック。
③プロジェクトを開いてどのようなイベントが配置されているか
 プラグインの設定やヘルプを確認。
④サンプルマップ「森」をコピペして雛形を作る。
⑤思う様ゲームを作る。

<イベントで使えるスクリプトコマンドやプラグインコマンド>
SRPG戦闘開始
◆プラグインコマンド:SRPGBattle Start
SRPG戦闘終了
◆プラグインコマンド:SRPGBattle End

指定した座標にカーソル(プレイヤー)を移動
◆スクリプト:this.playerMoveTo(12,10);
指定したイベントをエネミーに変更
◆スクリプト:this.addEnemy(25, 2);//(イベントID, エネミーID)
指定したイベントをアクターに変更
 ※アクターの特徴に自動戦闘が入ってると、自動行動アクターになる
◆スクリプト:this.addActor(24, 5);//(イベントID, アクターID)
指定したイベントIDのユニットが戦闘不能かを
指定したスイッチIDに格納
 ※戦闘不能=on、戦闘不能でない=off
◆スクリプト:this.isUnitDead(15, 11);//(スイッチID, イベントID)
指定したイベントと全てのアクターの中で
最も近いアクターの距離を変数に格納
◆スクリプト:this.fromActorMinimumDistance(11, 52);//(変数ID, イベントID)

2つのイベント間の距離を指定した変数に格納
◆スクリプト:this.EventDistance(11, 11, 52);//(変数ID, イベント1ID, イベント2ID)

アクターとアクターの距離を変数に格納
◆スクリプト:this.ActorDistance(11, 1, 2);//(距離を代入する変数ID, アクター1のID, アクター2のID)
指定したイベントの戦闘モードを変更
 ※'normal'     「通常」に設定します(設定しない場合、自動で「通常」になります)。
  'stand'      「相手が近づくまで待機」に設定します。
  'regionUp'   「相手が近づくまでより大きなリージョンIDに向かう」に設定します。
  'regionDown' 「相手が近づくまでより小さなリージョンIDに向かう」に設定します。
◆スクリプト:this.setBattleMode(48, 'normal');//(イベントID, モード)

Ver.1.02 (2017/11/23)のプロジェクトから読み取れたコマンドは以上です。
他にも色々あると思いますので、情報お待ちしています。

<拡張・併用可能プラグイン>
SRPGコンバータMVのWebサイトでも
いつくつか紹介されていますが、私が作ったものは以下の通り。

移動後も装備変更可能
 (ただし、移動力を変更する装備があると若干問題があるので注意)
スイッチでキャンプメニューを変更
 (拠点と戦闘中でEscメニューを変更したい時に)

拍手[2回]

PR
RPGツクールMVのイベントコマンドで使える便利なスクリプトの備忘録です。

プラグインを使わずにちょこちょこっとイベントを拡張できるので
とっても便利です。

教えてくださった皆様、ありがとうございます。

各種メニュー画面の呼び出し(参考/ツクマテ投稿記事

 セーブ画面呼び出し SceneManager.push(Scene_Save);
 ロード画面呼び出し SceneManager.push(Scene_Load);
 ステータス画面呼び出し SceneManager.push(Scene_Status);
 スキル画面呼び出し SceneManager.push(Scene_Skill);
 アイテム画面呼び出し SceneManager.push(Scene_Item);
 装備画面呼び出し SceneManager.push(Scene_Equip);
 オプション画面呼び出し SceneManager.push(Scene_Options);

アイテムの大事なもののページを開く(参考/ツクマテ投稿記事
SceneManager.push(Scene_Item);
SceneManager.update();
SceneManager._scene._categoryWindow.select(3);
SceneManager._scene.onCategoryOk();
SceneManager._scene._categoryWindow.deactivate();

オートイベントでメッセージをスキップしても移動が終わるまで待つ(参考/シロップ様)

 this.setWaitMode('route')
 会話直後に記述。

イベントの位置をリセット(参考/ツクマテ投稿記事

 $gamePlayer.requestMapReload();

画面のフェードイン・アウトを黒以外で(参考/ツクマテ投稿記事

 SceneManager._scene._spriteset._fadeSprite.setColor(255, 255, 255);
 フェードイン・アウトの直前に記述。
 255, 255, 255はRGB値で、数字を変更することで色を変えることができ
 変更した色は、メニューを開いたり、マップ移動したり
 戦闘に入ったりするなど、シーンが変わるまで維持される。

乗り物の「向き」を変更(参考/ツクマテ投稿記事

 小型船 $gameMap.boat().setDirection(2);
 大型船 $gameMap.ship().setDirection(2);
 飛行船 $gameMap.airship().setDirection(2);
 下に向けるなら2、上なら8、左なら4、右なら6

・「このイベント」に当たるイベントを途中で別イベントに差し替え(参考/卑弥呼テクニック

 this._eventId = 別イベントのID

移動ルートの設定でアニメーション再生(参考/卑弥呼テクニック
 this.requestAnimation(アニメーションID);

移動ルートの設定で指定したIDのイベントに近づく(参考:くらむぼん様)

 1番のイベントに一歩近づく this.moveTowardCharacter($gameMap.event(1))
 1番のイベントから一歩遠ざかる this.moveAwayFromCharacter($gameMap.event(1))
 1番のイベントの方を向く this.turnTowardCharacter($gameMap.event(1))
 1番のイベントの逆を向く this.turnAwayFromCharacter($gameMap.event(1))
 座標(変数1番,変数2番)に向かって歩く
  this.moveTowardCharacter({x: $gameVariables.value(1), y: $gameVariables.value(2)})

移動ルートの設定で最短ルートで指定の場所へ移動する(参考/ツクマテ投稿記事

 this.moveStraight(this.findDirectionTo(x,y))

移動ルートの設定で、指定した座標にジャンプ(参考/ツクマテ投稿記事

 this.jump(10 - this.x, 20 - this.y)

移動ルートの設定で、歩行グラのアニメパターンを指定(参考/公式フォーラム
  (this._direction の値は 2の時は↓、4の時は←、6の時は→、8の時は↑)

 this._direction = 6; this._pattern = 1;
スクリプトでSEの音量を調節(参考/ツクマテ投稿記事
◆変数の操作:#0001 SE音量 = AudioManager.seVolume(変更前の音量を取得)
◆スクリプト:ConfigManager['seVolume'] = 100;//音量を変更
◆SEの演奏:Absorb2 (90, 100, 0)
◆スクリプト:ConfigManager['seVolume'] = $gameVariables.value(1);//音量を戻す

・プレイヤーが直接入力することなく決定、キャンセルキーを入力(参考/ツクマテ投稿記事
  ◆キャンセルキーを押して離した
  スクリプト「Input._currentState['escape'] = true;」
  イベントコマンド「ウェイト(1)」
  スクリプト「Input._currentState['escape'] = false;」

 イベント例
 プレイヤーの左にこの作成したイベントがいたとして、決定ボタンを押すと
 プレイヤーは下を向き正面にいるイベントに話しかける。
 ◆移動ルートの設定:プレイヤー (ウェイト)
 :        :◇下を向く
 ◆スクリプト:Input._currentState['ok'] = true;
 ◆ウェイト:1フレーム
 ◆スクリプト:Input._currentState['ok'] = false;

 使用できるキーは、rpg_core.jsにある
 2996行目キーボードと3030行目ゲームパッドの定義

指定したSEだけ停止する(参考/ツクマテ投稿記事

例「Applause1」のみ演奏停止したい場合
コード: 全て選択
var seName = 'Applause1';
AudioManager._seBuffers.forEach(function(buffer) {
    if(buffer._url.match('/' + seName + '.')) {
        buffer.stop();
    }
});
AudioManager._seBuffers = AudioManager._seBuffers.filter(function(audio) {
    return audio.isPlaying();
});

スマホを振動させる(参考/ツクマテ投稿記事

 navigator.vibrate(2000);
 ※単位はミリ秒

マップ名の変更(参考/ツクマテ投稿記事

 変更 $dataMap.displayName = 'マップ名'
 表示 SceneManager._scene._mapNameWindow.open();
 ※情報はセーブされない、マップを移動する度リセットされる。

ダッシュの許可と禁止(参考/ツクマテ投稿記事

 許可 $dataMap.disableDashing = true;
 禁止 $dataMap.disableDashing = false;
 ※情報はセーブされない、マップを移動する度リセットされる。

戦闘イベント中にステータスウインドウを更新(参考/ツクマテ投稿記事

 SceneManager._scene.refreshStatus

フォロワーにアニメ表示(参考/ツクマテ投稿記事

 $gamePlayer.followers().follower(index).requestAnimation(id);
 indexには「フォロワーのindex」を、idにはアニメーションIDを記入

フォロワーに噴出し表示(参考/ツクマテ投稿記事
 $gamePlayer.followers().follower(n).requestBalloon(m);
 n:フォロワー番号(パーティの2番目が0、3番目が1...)、m:バルーンID

連続する変数に連番をランダムに代入(参考/ツクマテ投稿記事

var i1 = 1;     // 変数番号の最初
var i2 = 10;    // 変数番号の最後
var v1 = 1;     // 連番の開始値
var v2 = 10;    // 連番の終了値
var value = Array.apply(null,Array(v2-v1+1)).map(function(v,i){return i+v1});
for(var i=i1;i<=i2;i++){
  var v = value.splice(Math.randomInt(value.length),1)[0];
  $gameVariables.setValue(i,v);
}

プラグインで作成されたウインドウも含め画面を真っ暗に(参考/ツクマテ投稿記事

SceneManager._scene.alpha = 0;








イベントコマンド「条件分岐」で使える条件スクリプト


 決定キーが押された瞬間 Input.isTriggered('ok')
 (okの部分をcancel,up, down, left, right, pageup, pagedownなどに置き換え可)
マウス入力の判定(参考/ツクマテ投稿記事

 左クリック TouchInput.isTriggered();
 右クリック TouchInput.isCancelled();

今戦闘中かどうか(尾島様)

 $gameParty.inBattle()

逃走/敗北可能か(参考/ツクマテ投稿記事

 BattleManager.canEscape()
 //逃走可能
 BattleManager.canLose()
 //敗北可能

スキルが使える状態にあるか(参考/ツクマテ投稿記事

 $gameParty.members()[X].canUse($dataSkills[index])
 //indexはスキルID

他のイベントが起動中か(参考/ツクマテ投稿記事

 $gameMap.isEventRunning()
 
プレイヤーとイベントの当たり判定(参考/ツクマテ投稿記事

 this.character(0).x == this.character(-1).x && this.character(0).y == this.character(-1).y

キャラクターが移動中かどうかを判定(参考/ツクマテ投稿記事

 this.character(id).isMoving()

 移動中ならtrue、停止中ならfalse。
 idに-1でプレイヤー、0でイベント自身、1以上で対応するイベントID。
 停止中かどうかを判定する場合は、以下。

 this.character(id).isStopping()

イベントのメモ欄の文章を判定(参考/ツクマテ投稿記事

 ■イベント3番のメモ欄に あいうえお と書かれてあるかどうかを判定
 $gameMap.event(3).event().note === 'あいうえお'

 ■イベント3番のメモ欄に書かれている文章の中に あいうえお が含まれているかどうかを判定
 $gameMap.event(3).event().note.match(/あいうえお/)

 ■イベント3番のメモ欄に <ABCD> と書かれているかどうかを判定
 $gameMap.event(3).event().meta['ABCD']

 ■イベント3番のメモ欄に <ABCD:1> と書かれているかどうかを判定
 $gameMap.event(3).event().meta['ABCD'] === '1'

複数の変数を比べる(参考/ツクマテ投稿記事

◆変数#0001~#0004のいずれかが0より大きかったらOK
[1,2,3,4].some(function(id){return $gameVariables.value(id) > 0});

◆変数#0001~#0004のすべてが0より大きかったらOK
[1,2,3,4].every(function(id){return $gameVariables.value(id) > 0});

◆スイッチ#0001~#0004の全てがONならOK
[1,2,3,4].every(function(id){return $gameSwitches.value(id) > 0});

・変数1が3から44の間の値のとき(参考/ツクマテ投稿記事

 3 <=$game_variables[1] &&  $game_variables[1] <=44

メッセージが表示中か(参考/ツクマテ投稿記事

$gameMessage.isBusy()

セーブデータがあるか(参考/ツクマテ投稿記事

 DataManager.isAnySavefileExists();



イベントコマンド「変数の操作」で使える情報取得スクリプト

日時の取得(尾島様)

 年   new Date().getFullYear()
 月  new Date().getMonth() + 1
 日   new Date().getDate()
 曜日   new Date().getDay()
 時   new Date().getHours()
 分   new Date().getMinutes()
 秒   new Date().getSeconds()

 曜日も数値で取得されるので、数字から文字列に変更して下さい。
 0なら日、1なら月、3なら火・・・

マウスの位置を取得(ニナと鍵守の勇者ミニゲームより)

 画面X座標 TouchInput.x
 画面Y座標 TouchInput.y
 指定位置の情報を取得するために
 マス目を割り出すには、取得した数値を48で除算。

パーティのアクターIDの取得(参考/ツクマテ投稿記事

 $gameParty.members()[i].actorId();

 「i」並び順(0~)
 エネミーのIDを取得する場合は、以下。

 $gameTroop.members()[i]._enemyId

敵グループに勝利した時の合計金額(参考/ツクマテ投稿記事

 $gameTroop.goldTotal();
 敵グループに勝利した後イベントで代入

パーティ先頭キャラの武器タイプ1にセットされている装備名を取得(参考/ツクマテ投稿記事

 $gameParty.members()[0].equips()[0].name

パーティ先頭キャラの1番目のステート名を取得(参考/ツクマテ投稿記事

 $gameParty.members()[0].states()[0].name

パーティ先頭キャラの職業を取得(参考/フォーラム投稿記事

 $gameParty.members()[0].currentClass().name

BGMを取得(参考/ツクマテ投稿記事

 AudioManager.saveBgm();

 保存したBGMを再生(コマンド「スクリプト」)
 AudioManager.replayBgm($gameVariables.value(n));
 n:保存した変数番号

装備品のIDを取得(参考/ツクマテ投稿記事

 $gameActors.actor(n)._equips[n2-1]._itemId
 nをアクターのID、n2を装備スロットの上から数えた順番

パーティ内戦闘不能人数取得(参考/ツクマテ投稿記事

 $gameParty.deadMembers().length



ダメージ計算式基礎知識

最低でも1のダメージを与える(参考/初心者講座

 Math.max(m,1)

 mにダメージ計算式を入れる

1から a.atk * 4 までの間でランダムにダメージを与える(参考/初心者講座
 (a.atk * 4) * Math.random() + 1

動ける仲間の数を基本ダメージに(参考/初心者講座

 100 * $gameParty.movableMembers().length

残りHPが20%以下になると、威力が2倍になる(参考/ツクマテ投稿記事

 a.atk * 4 *(a.hp <= a.mhp / 5 ? 2 : 1) - b.def * 2

防御している敵には通常の2倍のダメージを与え、それ以外は通常のダメージを与える
 (参考/ツクマテ投稿記事

 a.atk * (b.isGuard() ? 4 * b.grd : 1)

敵が12番(眠り)ステートの場合ダメージが100、それ以外は1(参考/ツクマテ投稿記事

 b.isStateAffected(12) ? 100 : 1

敵が3番目のステートにかかってたら威力が2倍に、それ以外は通常の威力(参考/ツクマテ投稿記事

 a.mat * (b.isStateAffected(3) ? 2 : 1)

毒、暗闇、沈黙の場合ダメージが10000加算(参考/ツクマテ投稿記事

 a.atk * 4 - b.def * 2 + (b.isStateAffected(4) || b.isStateAffected(5) || b.isStateAffected(6) ? 10000 : 0)

毒、暗闇、沈黙の場合ダメージが2倍(参考/ツクマテ投稿記事

 (a.atk * 4 - b.def * 2) * (b.isStateAffected(4) || b.isStateAffected(5) || b.isStateAffected(6) ? 2 : 1)

敵が4番(毒)のステートでなければ毒を付加、それ以外は14番(猛毒)のステートに変更(参考/ツクマテ投稿記事

 b.isStateAffected(4) ? b.removeState(4)||b.addState(14)||0 : b.addState(4)||0

敵を決して倒すことが出来ない「みねうち」(参考/ツクマテ投稿記事

 Math.min(元々の計算式 , b.hp - 1)

相手のHPを1にする(参考/ツクマテ投稿記事

 b.hp - 1

攻撃系スキル使用時、使用者にステートを付与(参考/RPGツクールMVwiki

 a.addState(ステート番号);攻撃系スキルの計算式

 例)防御しながら通常攻撃 a.addState(2);a.atk * 4 - b.def * 2

指定IDのアクターがいれば対象に40ダメージ(参考/ツクマテ投稿記事

 $gameParty.members().contains($gameActors.actor(id)) ? 40 : 10

敵HPの下一桁が0か偶数か奇数かによってダメージをそれぞれ、0、100、5000に(参考/ツクマテ投稿記事

 if(a.hp % 10 == 0){0} else if(a.hp % 2 == 0){100} else {5000}

indexの大きいバトラーほどダメージが大きい(参考/ツクマテ投稿記事

 10 * (b.index() + 1)

クリティカル時のダメージを変更する(参考/ツクマテ投稿記事

 b.result().critical ? クリティカル時の計算式 : 通常の計算式

 ※クリティカル時の3倍ダメージ効果は適用されてしまうので、それを考えた上で式を作る

素手のダメージ(参考/ツクマテ投稿記事

 a.paramBase(2)*a.paramRate(2) * a.paramBuffRate(2)

スキルの使用者が敵か味方かで効果を分ける(参考/ツクマテ投稿記事

 BattleManager._action._subjectActorId != 0 ? (味方の場合の計算式) :(敵の場合の計算式)

攻撃と同時にmpを回復する(参考/ツクマテ投稿記事

 a.gainMp(回復値); a.atk * 4 - b.def * 2

小技
プレイヤーとイベントの距離判定(参考/ツクマテ投稿記事

var interpreter = this;
isInRange = function( chara1Id, chara2Id, range ) {
    var chara1X = interpreter.character( chara1Id ).x;
    var chara1Y = interpreter.character( chara1Id ).y;
    var chara2X = interpreter.character( chara2Id ).x;
    var chara2Y = interpreter.character( chara2Id ).y;
    return ( chara2X - range <= chara1X ) 
        && ( chara2X + range >= chara1X ) 
        && ( chara2Y - range <= chara1Y ) 
        && ( chara2Y + range >= chara1Y );
};
条件分岐にてisInRangeに下記引数を指定して実行します。
引数1:チェック対象1のイベントID
引数2:チェック対象2のイベントID
引数3:チェック範囲距離(3×3の場合は3、5×5の場合は5を指定する。)
※チェック対象にプレイヤーを指定する場合は、チェック対象1のイベントIDに-1を指定してください。

拍手[2回]

RPGツクールMV プラグイン備忘録5

目次その1その2その3その4その5チョイ技/情報/講座

NEW!
大海工房さまツイッター
・Text2Frame-MV(メッセージ組み込み開発支援)

口だけブログさま(ツイッター
・ランダム報酬額
・立ち絵マネージャ

RPGツクールと数学のブログさま
・ピクチャーモーション
・復活の呪文
・アルベド語
・正規分散
・プラグインコマンドの引数に変数の値を採用

RPGアツマール公式イベントプラグイン
APIリファレンス
SNS風ゲーム
放置ゲーム
スコアボード
外部リンク

ツクールフォーラム(公式フォーラムの投稿より)
 ---投稿プラグインまとめ【2017年6月版】(みなみよつばさま)
 ---投稿プラグインまとめ【2017年9月版】(みなみよつばさま)

戦闘/スキル/ステート/アイテム
スリップダメージやHP自動回復の量をターン毎に増減させる
能力値弱体/強化を3段階以上可能に
カウンター行動(反撃時にスキルを使用)
簡易設定(最低ダメージ等、いつくかの項目を設定)
攻撃対象選択時に弱点や耐性を表示
戦闘終了時に戦闘結果を表示
HP再生率による結果をバトルログに表示
バトルイベントを拡張/戦闘終了時にコモンイベント
サイドビュー時のアクターを一直線に並べる
スキルに反応して反撃/連鎖で更にスキルを発動
「戦闘行動の強制」の際、残りの行動をリセットしない
消費MPを現在の最大MPの比率で変動させる
いわゆるメガ○テとマダ○テ
YEPActionPack拡張・矢弾飛ばし
戦闘中、アイテムを所持数以上使えなくする
戦闘開始時の出現メッセージを複数形に対応させる
職業ごとに、武器タイプごとに、威力を増減させる
戦闘時に行動回数表示
所持金消費スキル
怪しい影(正体不明の敵)
戦闘時におけるウィンドウの行数を変更
味方の一番高い能力を吸収する
状態異常のとき戦闘キャラをフラッシュさせ続ける
装備やアイテムなどのパラメータを分離する
レベル差がある敵グループに強制勝利
敵、味方のダメージ倍率を変数制御する
戦闘行動の強制による、直前の中断された行動を再開する
ステートを重複可能に
弱点・耐性に応じてメッセージを追加表示
オートバトル
バトル中に立ち絵を表示(残HPで変更可)
スキル成功率変更
ダメージ分散を無効化
自動戦闘時に「作戦」を導入
耐性によってダメージが軽減されないスキル
ターン終了時に敵が復活
パーティコマンドに「とんずら」を追加
上位のステート作成(毒→猛毒など)
敵の攻撃を確率で軽減(パリィ)
戦闘不能時のメッセージをバトラーごとに変更
フロントビューバトルスタイル
スキル全体化


システム
足音をかなり詳細に設定可
イベントの上下反転やクロスフェードなどを実現
美容院システム(アクターの画像を一括して変更)
勝利アクション禁止
移動ルートの設定などの対象者を変更
立ち絵マネージャー(複数の画像を統合して一枚に合成して表示)
時間制限付選択肢
心の声ウインドウ(既存プラグインの組合わせて使うシステムグラフィックと小技)
戦闘不能のアクターを隊列の最後尾に回し、棺桶などの形で表示
オリジナルシーンやウィンドウを表示
同行者を隊列歩行にも表示
アクターのステータス欄の表示を変更
メッセージウィンドウを複数表示
イベント起動中は自律移動をストップ
ショップの装備画面で、全パラメータの変化を表示
起動中のイベントを強制中断、接触してきたイベントが強引に割り込む
アイテムボックスのカテゴリー選択を無くす
移動ルートのコモンイベント化
ゲームオーバー画面を表示してからリスポーン
アイテム等を入手したときに吹き出しを表示させる
カードゲーム(ババ抜き)
エンカウント歩数の計算式を変更する
MPが一定値以下の場合に顔グラフィックをマップ上へ表示
移動ルートの設定で『右に5歩』や『9時方向に蟹歩き』が可能に
アクターごとにアイテムを個別で所持する
歩くたびに経験値が増える装備
タイトル画面の背景をスクロール
セーブの最大数を変更
タイトル画面を拡張
あらすじ機能を追加
フォロワーを操作
イベントの位置情報を復元
1ボタンでコモンイベントを呼び出す
イベントの中断と再開をサポート
所持アイテムの合計数を取得
宝箱の残り個数を表示
スイッチで戦闘終了時のフェードインを制御
メニュー画面改造
見た目変更装備
残像表示
「移動ルートの設定」で任意のイベントコマンドを実行可能
「場所移動」時のフェードインを制御
パラムフッリワーケシステム(能力値振り分け
シンプルなセーブ画面
シンプルなメニュー画面
アクターを選ぶための選択肢
スプラッシュスクリーンとしてメッセージを表示
カレンダー機能
セーブ内容を反映させてから閉じる
遊泳・ダイビングシステム (人魚等)
簡易長文表示
ピクチャーやイベントに残像
イベントに立体的な影
文章のスクロール表示をマスク
自動斜め移動(坂、横向き階段上の移動など)
タッチ後の目的地を表す軌跡を非表示
ピクチャのドラッグ移動
BGM逆再生
メッセージウインドウの行数を変更
任意のメッセージを画面上にポップアップ
一人称等をスイッチと制御文字で変更
ショップで右に表示される装備した時の数値が一番効果のあるステータスで表示
豪華画面エフェクトの詰め合わせ
メッセージウィンドウ拡張
特殊なアクションを実装
多機能フックロープ
マップ上に簡単な情報ウィンドウを出す
画面上に文字列をポップアップ表示
ツキミ式選択肢ウィンドウ
ピクチャーやエネミーをぶった斬る
重みつきランダム
戦闘やイベントスキップ等のゲームスピードを自由に調整
時間経過システム
移動ルートの設定のスクリプトを使ってIF文などの処理を追加
パーティクルアニメ

その他
プラグインまとめ読み込み
タッチ移動で『通常キャラの下』イベントを通り抜け可能に
セーブファイルの軽量化
よりばらけたランダムな変数を取得
メタ手抜き
半透明テキストの透明度を変える
セーブデータのインポートとエクスポート
プラグインの一覧を取得
片手操作向けキー設定
ver1-5-0以降のロード時の遠景のちらつき対策
ゲームパッドの切断を報告
デバッグ支援
プラグイン40枚入りデッキ~タケノコ王国の野望編~
クロスゲートで作ったプラグイン集1
クロスゲートで作ったプラグイン集2
アニメのフレームレート調整
xorshiftを使用した再現性のある乱数
古き良きトランジション-グラデーションワイプ
ピクチャのボタン化会話中使用化
偽装缶詰(ツキミ式暗号化)
メモリ改竄チートを予防
破損したセーブデータの復元を試みる
oggファイルだけで音声を再生
MIDI 再生(β版)

目次その1その2その3その4その5チョイ技/情報/講座

拍手[2回]

RPGツクールMV ミニゲーム作成講座
「タイミングよく決定キーを押す」の時間です。

簡易的なゲージの作り方になります。
上下または左右に往復し、特定の範囲にある時決定キーを押すと入力成功!
という簡単なゲームが作れます。

例えば
・釣りゲーム
・ゴルフゲーム
・野球ゲーム
えとせとら

サンプルプロジェクトには「だるまおとし」っぽいのが入ってます。

サンプルプロジェクトのダウンロード

細かいことは、プロジェクトファイルを見てもらうことにして
ここでは、考え方を書いてきます。

だるま落としゲームの仕様書を作ります。

--------------------------------
・決定キーを押すと、ハロルドがコマを蹴飛ばしだるまを落とします。
・決定キーを押すタイミングによって、成功と失敗に分かれます。
・タイミングは上下に動くバー(飛行船)の位置によって取得されます。
--------------------------------

終わり。
仕様書ができました。

どこから作っていくかを考えます。

--------------------------------
①上下に動くバーを作る
②決定キーを押すとバーの位置を取得するイベントを作る
③ハロルドを動かし、コマを動かし、だるまを落とすイベントを作る
--------------------------------

この順番で作ることにします。

バーの見た目は、好きなように彩るとよろしいでしょう。
ここでは、飛行船の画像と、マップチップの適当なもので作りました。
バーを動かすイベントは、飛行船の自立移動の項目で制御します。
するとあら不思議! ほっといても勝手に上下に動いてくれます!
状況に応じてとめたい場合は、スイッチでイベントページを切り替えます。

というわけでバーができました。
次に、決定キーを押すと、バーの位置を取得するイベントを作ります。

決定キーの入力を取得する方法は、大きく分けて二つ考えられます。
一つは、プレイヤーを動かして、スイッチになるイベントを調べさせること。
もう一つは、並列処理イベントを使って、プレイヤーの入力を監視する方法です。

サンプルのプロジェクトには、それぞれのやり方が書いてあるので
参考にしてください。

さて次の問題は、どうやってバーの位置を取得するかです。

まず、イベントの現在位置を取得します。
今回のように、1マスだけの判定なら
取得した位置をそのまま、判定に使ってもいいのですが
範囲が広い場合は、条件分岐が複雑になるので
リージョンの力を借りることにします。

リージョンは、マップパレットの「R」タブから選択して
マップに描画できるチップです。
通常、マップの設定からランダムエンカウント用の出現範囲に使用されます。
これを活用して、イベントがある位置のリージョン番号が
特定の番号なら、OKとします。

判定ができたら、後は「移動ルートの設定」コマンドを使って
それぞれのイベントにそれぞれの行動を入力するだけ!
簡単ですね!

詳しいやり方は、サンプルプロジェクトを見てください。

この技法は覚えておくと色んなところで活用できると思います。
今回はタイミングよくキーを押すためのバーでしたが
応用すれば、タイマーイベントなんかも作れますね。
(ワンコが画面を一周してくる間に何かを集めるとか)

ワンボタンでちょこっと遊べるミニゲーム。
あなたも作ってみませんか?

拍手[5回]

前回に引き続き、今度は屋根のオートタイルを作ります。

①四角4つのキャンバスを開き、屋根の4つの角を
 それぞれ配置していきます。


②「AUTOTILE(オートタイル)」と書かれたキャンバスを開き
 今作ったタイルを下4マスに配置します。
 (最初からオートタイルのキャンバスに配置していってもいいです)
 下4マスがメインのパーツです。
 正方形や長方形を描く場合は、このパーツだけで描けます。
 左上の1マスは、パレットにどんなパーツかを表示するダメのもので
 わかりやすければどんな絵を入れていても大丈夫です。
 右上の1マスは、正方形や長方形以外の形を描くときに使われる補助パーツです。
 まずは、この状態でタイルセットに保存してみましょう。

③はい、また問題が浮き彫りになりましたね。
 レンガの部分はまた、影が悪さをしているようなので
 影のない部分を貼り付けることにしましょう。

 そして四角以外の形にしたときの足りないパーツも
 なんとなくどういうものが必要か、ピンときたでしょうか?
④では、一番左上を埋めてみましょう。
 今回は、一番左端の1マス用キャンバンスを開いてください。
 パレットから一番右下のパーツを選択し
 一番左上のグリッドに合わせて配置します。


 これを、オートタイルに貼り付けて、どうなったか見てみましょう。


⑤はい、角が一つ埋まりました!
 こんなに簡単にできるなんて、今回はとてもラッキーです!

⑥若干色合いの違う線は、後でペンツールで調整するとして
 他の角も同じ要領で作っていきます。
  

⑦はい、ぴったり埋まりました!

 補助パーツの上2つ分の色の違う部分を
 ペンツールで調整すれば完成です!
 今回は、茶色い横線を1本引くだけで調整できました。
 非常にラッキーです。

というわけで、壁・天井共に完成です!
今回作ったオートタイルは、素材のページで配布中!


いきなりオリジナルのオートタイルを作るのは難しいけど
素材を改変することで、なんとなくやり方がわかってもらえたでしょうか?


他のサイトさんのオートタイル作成講座もご紹介しておきますね。

・RPGツクールMVのヘルプ内
 資料集→素材企画に、タイルセット詳細があるのでチェック!
 ほぼ同じ内容ですが、公式サイトの活用講座にも掲載されています。
BB ENTERTAINMENT BLOGさんの「オートタイル研究

拍手[0回]

オススメGAME
広告枠
アクセス解析

ATOM  
ATOM 
RSS  
RSS 


Flash Game 館

ソフトウェア制作講座






Copyright ©   YUWAKA'S SOFT   All Rights Reserved
Design by MMIT / TemplateB3  Powered by NINJA TOOLS
忍者ブログ [PR]