いつもお世話になってます。
3Dダンジョンのようなキャラ移動に変更したいのですが、どのようなスクリプトにしたらいいでしょうか?
以下のように、キーが押されたときにそれぞれ動作するようにしたいと考えています。
↑キー:前に進む
→キー:右を向く
←キー:左を向く
↓キー:後ろを向く
よろしくお願いします。
【解決済み】3Dダンジョンのようなキャラ移動に変更したい
Re: 3Dダンジョンのようなキャラ移動に変更したい
とりあえず次のようなコードを書いてみました。
それっぽい動作はするようなりましたが、
「こういう書き方あるよ~」とか「ここおかしいよ~」とかありましたらご指摘おねがいします。
コード: 全て選択
(function() {
var CurrentDirection = 6;
var _Game_Player_executeMove = Game_Player.prototype.executeMove;
Game_Player.prototype.executeMove = function(direction) {
switch (CurrentDirection) {
case 2:
if (Input.isTriggered('up')) {
this.moveStraight(2);
this.setDirection(2);
CurrentDirection = 2;
} else if (Input.isTriggered('down')) {
this.setDirection(8);
CurrentDirection = 8;
} else if (Input.isTriggered('left')) {
this.setDirection(6);
CurrentDirection = 6;
} else if (Input.isTriggered('right')) {
this.setDirection(4);
CurrentDirection = 4;
};
break;
case 4:
if (Input.isTriggered('up')) {
this.moveStraight(4);
this.setDirection(4);
CurrentDirection = 4;
} else if (Input.isTriggered('down')) {
this.setDirection(6);
CurrentDirection = 6;
} else if (Input.isTriggered('left')) {
this.setDirection(2);
CurrentDirection = 2;
} else if (Input.isTriggered('right')) {
this.setDirection(8);
CurrentDirection = 8;
};
break;
case 6:
if (Input.isTriggered('up')) {
this.moveStraight(6);
this.setDirection(6);
CurrentDirection = 6;
} else if (Input.isTriggered('down')) {
this.setDirection(4);
CurrentDirection = 4;
} else if (Input.isTriggered('left')) {
this.setDirection(8);
CurrentDirection = 8;
} else if (Input.isTriggered('right')) {
this.setDirection(2);
CurrentDirection = 2;
};
break;
case 8:
if (Input.isTriggered('up')) {
this.moveStraight(8);
this.setDirection(8);
CurrentDirection = 8;
} else if (Input.isTriggered('down')) {
this.setDirection(2);
CurrentDirection = 2;
} else if (Input.isTriggered('left')) {
this.setDirection(4);
CurrentDirection = 4;
} else if (Input.isTriggered('right')) {
this.setDirection(6);
CurrentDirection = 6;
};
break;
};
};
})();
それっぽい動作はするようなりましたが、
「こういう書き方あるよ~」とか「ここおかしいよ~」とかありましたらご指摘おねがいします。
最後に編集したユーザー ま~くん on 2017年8月24日(木) 19:30 [ 編集 1 回目 ]
Re: 3Dダンジョンのようなキャラ移動に変更したいにゃ~
こんばんは。
それっぽい動作をするんだったら問題ないと思うんですが、
調べてみたところ
一歩前に前進:this.moveForward()
アクターの向きを取得:this.direction()
押されている間処理を繰り返す:Input.isPressed
というものがあるようなのでそれらを使って作成してみました。
ほぼ同じ動作だと思いますが、上を押しているあいだ前に進み続けます。
それっぽい動作をするんだったら問題ないと思うんですが、
調べてみたところ
一歩前に前進:this.moveForward()
アクターの向きを取得:this.direction()
押されている間処理を繰り返す:Input.isPressed
というものがあるようなのでそれらを使って作成してみました。
コード: 全て選択
var _Game_Player_executeMove = Game_Player.prototype.executeMove;
Game_Player.prototype.executeMove = function(direction) {
if (Input.isPressed('up')) {
this.moveForward();
}
if (Input.isTriggered('right')) {
if(this.direction() == 2){
this.setDirection(4);
} else if(this.direction() == 4){
this.setDirection(8);
} else if(this.direction() == 6){
this.setDirection(2);
} else if(this.direction() == 8){
this.setDirection(6);
}
}
if (Input.isTriggered('left')) {
if(this.direction() == 2){
this.setDirection(6);
} else if(this.direction() == 4){
this.setDirection(2);
} else if(this.direction() == 6){
this.setDirection(8);
} else if(this.direction() == 8){
this.setDirection(4);
}
}
if (Input.isTriggered('down')) {
if(this.direction() == 2){
this.setDirection(8);
} else if(this.direction() == 4){
this.setDirection(6);
} else if(this.direction() == 6){
this.setDirection(4);
} else if(this.direction() == 8){
this.setDirection(2);
}
}
};
ほぼ同じ動作だと思いますが、上を押しているあいだ前に進み続けます。
------------------------------------------------------
Twitterやってます。
https://twitter.com/BB_ENTER
ブログもやってます。
http://bb-entertainment-blog.blogspot.jp/
Twitterやってます。
https://twitter.com/BB_ENTER
ブログもやってます。
http://bb-entertainment-blog.blogspot.jp/
Re: 3Dダンジョンのようなキャラ移動に変更したいにゃ~
りよねこ様
お世話になりますにゃ。
引数のdirectionくんがリストラされているのは寂しいと思いましたにゃ。
最初のキーが押された時の動作の意味が分かったため
せっかくなので改変案を貼っておくにゃ。
Input.isTriggeredの分岐はつけないとキー押下時に
キャラがあらぶるのでつける方法しか思い浮かばなかったにゃ(半ギレ)
お世話になりますにゃ。
引数のdirectionくんがリストラされているのは寂しいと思いましたにゃ。
最初のキーが押された時の動作の意味が分かったため
せっかくなので改変案を貼っておくにゃ。
Input.isTriggeredの分岐はつけないとキー押下時に
キャラがあらぶるのでつける方法しか思い浮かばなかったにゃ(半ギレ)
コード: 全て選択
Game_Player.prototype.executeMove = function(direction) {
if(direction === 8){
this.moveForward();
return;
}
if (Input.isTriggered('down')) this.turn180();
if (Input.isTriggered('left')) this.turnLeft90();
if (Input.isTriggered('right')) this.turnRight90();
};
RPGで笑顔を・・・
ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup
github
https://github.com/mattuup/RPGMakerMZ
ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup
github
https://github.com/mattuup/RPGMakerMZ
Re: 3Dダンジョンのようなキャラ移動に変更したい
ビービーさま、まっつUPさま、ご指摘いただきありがとうございます。
ビービーさまの書いてくれた以下の機能いいですね。
・一歩前に前進:this.moveForward()
・アクターの向きを取得:this.direction()
・押されている間処理を繰り返す:Input.isPressed
使わせていただきます。
まっつUPさまのコードにある「turn~」には気が付きませんでした。
これもぜひ使わせてください。
お二方のコードはすっきりしててきれいなので、とても勉強になります。
どうもありがとうございます。
ビービーさまの書いてくれた以下の機能いいですね。
・一歩前に前進:this.moveForward()
・アクターの向きを取得:this.direction()
・押されている間処理を繰り返す:Input.isPressed
使わせていただきます。
まっつUPさまのコードにある「turn~」には気が付きませんでした。
これもぜひ使わせてください。
お二方のコードはすっきりしててきれいなので、とても勉強になります。
どうもありがとうございます。