【解決済み】移動中向き固定及び、移動せずに向きだけ変えたい

アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

【解決済み】移動中向き固定及び、移動せずに向きだけ変えたい

投稿記事by にゃたま » 2018年9月03日(月) 13:40

こんにちは。

移動中向きを固定してカニ歩きできるプラグインなどありませんでしょうか?
ボタンを押している間中プレイヤーの向きを固定するようなものです。

また、逆に移動せずに向きのみかえるプラグインもないでしょうか?
ボタンを押している間プレイヤーの移動のみ停止して向きを変えられるものです。

そのようなプラグインを知っている方いましたら教えて頂けましたら幸いです。

追記
因みにプラグインなしでもできる方法ありましたら教えてください。
よろしくお願いいたします。
最後に編集したユーザー にゃたま on 2018年9月24日(月) 16:16 [ 編集 1 回目 ]

アバター
mame
記事: 4
登録日時: 2018年3月21日(水) 19:01
お住まい: 日本
連絡を取る:

Re: 移動中向き固定及び、移動せずに向きだけ変えたい

投稿記事by mame » 2018年9月18日(火) 22:24

9/24追記
※にゃたま様が制作されたプラグインがこの先にありますので、
機能が必要な方は、そちらを使用されることを推奨致します。

ド素人なので、処理に問題があるようでしたらすみません。
向きだけ変える部分についてのみですが、僭越ながら回答させていただきます。

rpg_object.jsの7660行目を、例えば下記のように弄って下さい。

Game_Player.prototype.executeMove = function(direction) {
if(Input.isPressed('shift')){ //シフトキーが押されている場合
this.setDirection(Input.dir4); //その場で方向転換する
}else{
this.moveStraight(direction); //入力された方向に進む(元々の処理)
}
};

//以下追記-----------------------------------------------------------------------------
//
//元の処理を上書きしてしまうのは問題があるということで、申し訳有りません。
//色々な方のスクリプトを参考に、元の処理に影響を与えないようにしてみました。
//
//後から見る方もいらっしゃるかと思いますので、ここに載せさせていただきます。

(function(){
'use strict';

Input.keyMapper[67] = 'C'

const _Game_Player_executeMove = Game_Player.prototype.executeMove;
Game_Player.prototype.executeMove = function(direction) {
if(Input.isPressed('C')){
this.setDirection(Input.dir4);
}else{
_Game_Player_executeMove.apply(this, arguments);//元の処理
}
};

})();

カニ歩きについては機能を実装したこともなく、少し眺めてみましたが良くわかりませんでした。
お役に立てず申し訳ありません。
※カニ歩き実装できました。下に載せました。
最後に編集したユーザー mame on 2018年9月24日(月) 20:19 [ 編集 4 回目 ]
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: 移動中向き固定及び、移動せずに向きだけ変えたい

投稿記事by にゃたま » 2018年9月19日(水) 11:26

mame様

ご連絡いただきありがとうございます。
プラグインにしてやってみましたらキー入力でうまく固定することができました。
コアスクリプトを編集するのはコアスクリプトバージョンアップ時に問題になるので
保留とさせていただきます。

あとは向きだけ固定の機能ですね…私も少し探してみたのですが
setDirectionというメソッドはGame_Charactorで定義されているので
これにキー入力で分岐させてしまうとマップで動いている他のキャラクターまで
止まってしまいますね…
Game_Playerの中で無いか探ってたのですが私もわかりませんでした。

引き続きわかりそうな方がいましたらご教授いただけたら幸いです。
アバター
mame
記事: 4
登録日時: 2018年3月21日(水) 19:01
お住まい: 日本
連絡を取る:

Re: 移動中向き固定及び、移動せずに向きだけ変えたい

投稿記事by mame » 2018年9月19日(水) 13:16

カニ歩きが実装できたので、お知らせします。
Game_Character.prototype.setDirectionをコピーして、
Game_Playerに名前を変更し、条件分岐を追加しました。
プラグインを作成し、導入してみてください。

(function(){
'use strict';

//---------------------------------------------------------------

Input.keyMapper[65] = 'A' //キーを追加

Game_Player.prototype.setDirection = function(d) {
if(Input.isPressed('A')){ //Aキーが押されていればreturn;
return;
}
//ここからは通常の処理
if (!this.isDirectionFixed() && d) {
this._direction = d;
}
this.resetStopCount();
};

//---------------------------------------------------------------

})();

スクリプトは素人なので、なにか問題があるようでしたらすみません。
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: 移動中向き固定及び、移動せずに向きだけ変えたい

投稿記事by にゃたま » 2018年9月24日(月) 15:25

mame様

お返事が遅くなり申し訳ございませんでした。

自分でも無い頭を使ってアドバイスいただいたとおりプラグイン組んだら
うまく動作しました。無事解決いたしました!!

私もスクリプトはまだ初心者の域を脱しきれてませんが一応作ったので
同様の機能を使いたい方用に残しておくことにします。

もし問題があれば取り下げたいと思います。
今回はお付き合いいただきましてありがとうございました。
添付ファイル
NYA_PlayerRotationForbid.js
1.0.1 競合の可能性を減らしました
(2.88 KiB) ダウンロード数: 203 回
最後に編集したユーザー にゃたま on 2018年10月11日(木) 01:27 [ 編集 2 回目 ]
アバター
mame
記事: 4
登録日時: 2018年3月21日(水) 19:01
お住まい: 日本
連絡を取る:

Re: 【解決済み】移動中向き固定及び、移動せずに向きだけ変えたい

投稿記事by mame » 2018年9月24日(月) 20:20

にゃたま様

こちらこそ、ありがとうございました。
勉強になりました。今後もなにかありましたら、よろしくお願い致します。

“MV:質問” へ戻る