りよねこたわ~

ロールプレイングゲーム作ってみたいにゃ~でもどうしたらいいのにゃ~?

このゲームの3Dダンジョンはこんな感じでできてるにゃ~【その6にゃ~】

ω・`) 19枚目のマップのイベントを作成中にゃ~。

ω-`) うにゃ~?あんまり進んでにゃいにゃ~。

ω-`) 悪い癖がでちゃってにゃ~、ちょこちょこ機能追加しちゃったんにゃ~。

 

ω・`) キャラクターの向きから見える範囲の添え字を取得するところまでできたかにゃ~。

じゃ~取得した添え字から、タイルマップ情報を取得するところから始めるにゃ~。

 

配列a[ ]~e[ ]には添字の情報が入っているから、

//////////

for (i = 0; i <= 4; i++) {

    $dataMap.data[a[i]];

//////////

ってスクリプトで、タイルマップ情報を取得できるにゃ~。

$dataMap.data[ ]は、dataフォルダにあるMap???.jsonファイルの配列dataの値が取得できるにゃ~。

 

タイルセット情報(タイルセット番号かにゃ~?)が取得できたら、次はタイルセット番号の定義かにゃ~。

つまりそのタイルセット番号がどういう壁を持っているかを定義するんにゃ~。

f:id:riyoneko:20180425174555p:plain

例えば、この図の赤丸の位置のタイルセット番号を1とするにゃ~。

このタイルセットは、上側に壁、下側に壁があるにゃ~。

このタイルセットの壁を次のように定義するにゃ~。

//////////

switch (wall)

    case 1:

        if ($gamePlayer.direction() === 6) {

            tmp_wall_acenter[i] = 'wall_acenter_clear' + (i);

            tmp_wall_aleft[i] = 'wall_aleft' + (i);

            tmp_wall_aright[i] = 'wall_aright' + (i);

        } else if ($gamePlayer.direction() === 4) {

            tmp_wall_acenter[i] = 'wall_acenter_clear' + (i);

            tmp_wall_aleft[i] = 'wall_aleft' + (i);

            tmp_wall_aright[i] = 'wall_aright' + (i);

         } else if ($gamePlayer.direction() === 2) {

            tmp_wall_acenter[i] = 'wall_acenter' + (i);

            tmp_wall_aleft[i] = 'wall_aleft_pass' + (i);

            tmp_wall_aright[i] = 'wall_aright_pass' + (i);

          } else if ($gamePlayer.direction() === 8) {

            tmp_wall_acenter[i] = 'wall_acenter' + (i);

            tmp_wall_aleft[i] = 'wall_aleft_pass' + (i);

            tmp_wall_aright[i] = 'wall_aright_pass' + (i);

         };

        break;

//////////

このように、上下左右を向いているときの見えている壁を定義するんにゃ~。

tmp_wall_???は、ローカル変数にゃ~。

そのローカル変数に文字列を代入しているんにゃ~

この文字列はそのうちでてくるんにゃけど、画像ファイルを指しているにゃ~。

例えば、右を向いている($gamePlayer.direction() === 6)時、目の前には壁はないからここでは'wall_acenter_clear'って定義しているにゃ~。

右を向いている時、左手側(上側)に壁があるから、'wall_aleft'って定義してるにゃ~。

同様に、上を向いている($gamePlayer.direction() === 8)時、目の前に壁があるから'wall_acenter'、左右の方向に通路が伸びているから'wall_aleft_pass'、'wall_aright_pass'ってそれぞれ定義してるにゃ~。

 

タイルセット毎に壁を定義したら、それをもとに壁を描画していくにゃ~。

 

っ´ーωー`)っ 眠くなってきたから、続きは次回にゃ~。