ページ 11

ゲームオーバーMEの変更

Posted: 2018年2月21日(水) 23:54
by hogehoge
演出としてゲームオーバー時のME変更を取り入れたく、現在スクリプトを使って挑戦しているのですがうまくいきません。

コード: 全て選択

$dataSystem.setGameoverMe({"name":"Inn","volume":90,"pitch":100,"pan":0})

見様見真似で上記のスクリプトで変更しようとしたのですが、
$dataSystem.setGameoverMe is not a function
とエラーが出てしまいます。
どこが間違っているのか教えていただけると幸いです。

Re: ゲームオーバーMEの変更

Posted: 2018年2月22日(木) 00:14
by しぐれん
$dataSystemはクラスではなくただのデータなので、メソッドがありません。

ここを改造すれば動くはずです。

コード: 全て選択

Scene_Gameover.prototype.playGameoverMusic = function() {
    AudioManager.stopBgm();
    AudioManager.stopBgs();
    AudioManager.playMe($dataSystem.gameoverMe);
};

Re: ゲームオーバーMEの変更

Posted: 2018年2月22日(木) 00:28
by 剣崎 宗二
しぐれんさんの物に追加解説です。

根本的な話ですが、プログラムの仕組みとしてmethod(後ろに括弧がついている。要はコモンイベントの様に、コマンドの集合体)はvariable(ツクールの変数と同様の物)と区別されており、methodは事前に定義されていないと呼べません。でないと、ツクールで言えば「存在しないコモンイベントを呼び出している」ような状態になります。

例えば

コード: 全て選択

$gameSystem.onBattleStart();

と言うコマンドが使えるのは、

コード: 全て選択

Game_System.prototype.onBattleStart = function() {
    this._battleCount++;
};

と言う「定義」がrpg_objects.jsの内部にあるからです。

そして、setGameoverMeと言うmethodは私が調べる限りデフォルトのコードのどこにも定義されておりません。
何かしらのプラグインからコピーしてきたというのであれば、その「定義部分」も一緒に持ってこなければいけませんし、そうでないのであれば

コード: 全て選択

$dataSystem.gameoverMe = {"name":"Inn","volume":90,"pitch":100,"pan":0}


と、既に存在している変数部分を変更するのが宜しいかと考えます。

Re: ゲームオーバーMEの変更

Posted: 2018年2月22日(木) 11:33
by hogehoge
お二方ともありがとうございます!
根本的なところでミスをしていたのですね…

無事ME変更する事ができました!ありがとうございます!