ページ 1 / 1
【解決済】スクリプト改変依頼【スイッチ→セルフスイッチ】
Posted: 2017年12月17日(日) 16:52
by siga
初めて投稿いたします。ツクール初心者です。よろしくお願いいたします。
こちらshirogane様が公開されているスクリプトの改変をお願いしたく参りました。
https://qiita.com/shirogane/items/1f2dc5baf8433269ffce
コード: 全て選択
var switchIndex = 1
if(!$gameSwitches.value(switchIndex)){
if(Math.sqrt(Math.pow(this.character(-1)._x - this.character(1)._x,2) + Math.pow(this.character(-1)._y - this.character(1)._y,2))<0.5){
$gameSwitches.setValue(switchIndex,true)
}
}
衝突判定をするスクリプトで、衝突したと判定されるとスイッチN番がONになるスクリプトなのですが
スイッチではなくそのイベントの
セルフスイッチがONにするようにしたいです。
自分で色々試したのですがJavaScript初心者のためお手上げ状態です。
救いの手を差し伸べて頂ければ幸いです。
Re: スクリプト改変依頼【スイッチ→セルフスイッチ】
Posted: 2017年12月17日(日) 17:17
by しぐれん
this.character(-1)がプレイヤーを取得、this.character(1)がイベント1を取得だったと思います。
ちなみに、セルフスイッチの操作は以下のような方法で行います。
(イベントコマンドのセルフスイッチ操作の実装より)
コード: 全て選択
// Control Self Switch
Game_Interpreter.prototype.command123 = function() {
if (this._eventId > 0) {
var key = [this._mapId, this._eventId, this._params[0]];
$gameSelfSwitches.setValue(key, this._params[1] === 0);
}
return true;
};
処理で分からないところがあったら、Game_Interpreter周辺を探すと見つけやすいです。
Re: スクリプト改変依頼【スイッチ→セルフスイッチ】
Posted: 2017年12月17日(日) 18:07
by siga
しぐれん 様
ありがとうございます。
コード: 全て選択
$gameSelfSwitches.setValue([this._mapId, this._eventId, "B"], true)
if(Math.sqrt(Math.pow(this.character(-1)._x - this.character(1)._x,2) + Math.pow(this.character(-1)._y - this.character(1)._y,2))<0.5){
$gameSwitches.setValue([this._mapId, this._eventId, "B"], true)
}
見様見真似でセルフスイッチをONにする記述はできたのですが
衝突していないのに無条件でセルフスイッチがONになってしまいます。
JavaScript初心者と申しましたがここがここになんとなく対応してるのだな程度しか分からず
お恥ずかしながら正直どこをどう組み立ててよいのか分からない状況です。
どうすれば反映してくれるのでしょうか?どなたでもご教授頂けると幸いです。
Re: スクリプト改変依頼【スイッチ→セルフスイッチ】
Posted: 2017年12月17日(日) 18:46
by しぐれん
コード: 全て選択
$gameSelfSwitches.setValue([this._mapId, this._eventId, "B"], true)
この処理が一番上にあるので、if文の判定前に処理が行われて無条件でスイッチがオンになります。
if文の内側に移動しましょう。
$gameSwitches.setValue([this._mapId,
this._eventId, "B"], true)の太字にした部分を1にしてみてください。
マップイベント1のセルフスイッチBがONになるはずです。
恥ずかしがらずにバンバンやってみましょう。
試行錯誤を頑張る人は応援します。
できました!!
Posted: 2017年12月17日(日) 20:16
by siga
しぐれん 様
丁寧なご解説ありがとうございます。
おかげ様で衝突判定後にセルフスイッチを操作するプラグインに書き換えることができました!
コード: 全て選択
if(Math.sqrt(Math.pow(this.character(-1)._x - this.character(1)._x,2) + Math.pow(this.character(-1)._y - this.character(1)._y,2))<0.5){
$gameSelfSwitches.setValue([this._mapId, 1, "B"], true)
}
果たしてこれで完璧なのか分かりませんが今の所何の問題もなく運転できているので満足です!
これを使ってゲーム制作を進めて行きたいと思います。
まさか自力でできるものだとは思わなかったです(笑)
思い切って質問した甲斐がありました。本日は本当にありがとうございました!