「ドット単位移動と8方向移動+ダッシュ移動時の画像変更」ができるようにしたいと考えています。
DotMoveSystem 1733行目~
コード: 全て選択
dotMoveByDeg(deg, dpf = this._character.distancePerFrame()) {
if (this._moverData.stopping)
this.resumeMove();
// this.setDirection(deg.toDirection4(this._character.direction()));
//ここを8方向に判定するように書き換える
this.setDirection(deg.toDirection8(this._character.direction()));
console.log(this._character);
const moved = this.createDotMoveProcess().dotMoveByDeg(deg, dpf);
this._character.moveCallback(moved, dpf);
}
ドット単位で移動した時、DotMoveSystemは上下左右方向のキャラ画像だけがあることを想定しているので
そこを斜め向きかどうかまで判定するようにすればよいのではないかと思い、このように直してみたところ
一応歩き入力時に斜め方向の画像が適用されるようになりました。
●わからないところ
ただし以下の点が解決できなくて困っています。
①矢印キー入力で移動した時、ダッシュ入力してもダッシュ時の画像が反映されない
PD_8DirDash 60行目~
コード: 全て選択
Sprite_Character.prototype.shiftCharacterPatternX = function(shift) {
if(this._prevStopping){
this._prevStopping = this._character.isStopping();
}
var fileName = this._characterName.substring(this._characterName.lastIndexOf( "_" ));
if((fileName.indexOf("D") != -1) && this._character.isDashing() && !this._prevStopping){
shift += 3;
}
this._prevStopping = this._character.isStopping();
return this._character.pattern() + shift;
};
この箇所の if((fileName.indexOf("D") != -1) && this._character.isDashing() && !this._prevStopping)
の条件の判定がDotMoveSystemを入れたときになにか変わっているのだと思うのですが、これ以上わかりませんでした。
②マウスで移動先を指定した時、斜め方向の画像が反映されない
マウスクリックで移動する場合は、逆にダッシュ画像が反映され、斜め移動の画像が反映されない、という状況です。
上記の2点について、粘ってみたのですが自力では難しい(特にDotMoveSystemが何をしているのかうまく理解できない)ので、解決法をご教授いただければと思います。よろしくお願いします。
●なぜこの2つのプラグインを使いたいか
・うなぎおおとろ氏のCharacterMoveMotionExを使えば、DotMoveSystemと同じことができるのではないか
→PD_8DirDashと木星ペンギン氏のMPP_CharacterMakeを併用して、「ゲーム中の見た目変更機能+8方向・ダッシュ移動画像の変更」をできるようにしたいと考えています。
CharacterMoveMotionExがプラグインパラメータでダッシュに使う画像、斜め移動に使う画像などを事前に指定しておくタイプのプラグインなので、
ゲーム中にキャラクター画像を生成する(という理解でよいのでしょうか…)MPP_CharacterMakeとは相性がよくないので、PD_8DirDashを使いたいと考えています。
・他の移動系プラグインで対応できないか
→当初サンシロ氏のSAN_AnalogMoveと併用していたのですが、当たり判定の調節やドット単位の移動が指定できるDotMoveSystemのほうが多機能なので、こちらに乗り換えたいと考えています。
トリアコンタン氏のHalfMoveも試してみたのですが、できればドット単位で移動できる方が動かしていて楽しいのでこちらを採用したいと考えています。