PC移動とマップスクロールの基本を作成
前回(第11回)に続き、今回は…
それでは、前回の「基本レクチャーⅠ マップ移動の基本を作る!」の続きをレクチャーしていこう。
前回は使用するマップを作ったので、今回は、そのマップのスクロールやマップ上を移動するPCを作成し、さらには障害物との判定も行っていく。
今回、使用するflaは、前回の「MapAdv_1」からマップスクロールやPCの移動処理を入れた「MapAdv_2」となり、そのflaを用いて進めていく。
Ⅰ-② マップ移動データを作る!
今回のまず手始めは「マップ移動データ」を作成する。このデータは、マップスクロールやPCの移動に必要となるもので、PCが一歩先へ移動可能かどうか、障害物があるなら回避移動するかどうかの判定に用いる[1]。
(1)初期設定にマップ移動データを記述する
初期設定は前回でも解説したが、新たに追加した「マップ移動データ」関連と「PCの移動ウエイトフラグ」以外は前回と同じなので、ここでは、ポイントである「マップ移動データ」関連と「PCの移動ウエイトフラグ」のみ取り上げて解説する。
マップ移動データについて、上記した数値の羅列だけではイメージ難しいと思うので、実際に使用するマップ絵にこれらのデータを並べてみた。次のFla画面1をご覧になれば、これら数値の意味がわかると思う。
それでは、このマップ移動データを用いつつ、マップスクロールやPC移動を作成、レクチャーを進めていく。
Ⅰ-③ PC移動+マップスクロールを作る!
今回のゲームでは、PCの移動処理内でマップのスクロールも行っている。従って、PCの作成と移動処理の解説を進めながらマップスクロールの解説も行っていく。
PCの移動については、次のフローのように、プレイヤーからのキー入力を受け、ボタン→PCクリップへ処理展開する。
(1)キー入力によるPCとマップ移動処理の流れ
プレイヤーから移動キー(2、8、4、6)の入力があると、次の手順でPC移動とマップをスクロールさせている。ここでは、8キー(正面向き、↓方向へ移動)を例に紹介する。
…以上、ざっとこの流れでPC移動とマップのスクロールが実行される[2]。
では、全体の流れが掴めたところで、ボタンとPCクリップ内の解説へ移っていく。
(2)ボタンに記述したボタンアクションの解説
前のフローに記したように、プレイヤーから移動キーが入力されると、まずはボタンに記述した次のスクリプトが処理される。
(3)PCクリップ内解説
次に、キー入力されボタンアクションによってPCクリップ内にgotoAndPlayされてくると、入力されたキーによって、PCの各向き「正面(フレーム名 F)」「後ろ(フレーム名 B)」「左(フレーム名 L)」「右(フレーム名 R)」のフレームが再生され、各処理が実行される。
(4)タイムライン解説・正面向き「F」の場合
PCの各向きでの処理は、移動方向や飛び先のフレームなどの違いはあれど、行っていることは同じなので、ここでは8キーが入力された場合に実行される正面向きを解説する。
【スクリプト①】の解説
8キーが入力されて「F」フレームへ飛んできたら、一歩先へ移動可能かどうか「マップ移動データ」をチェックし処理分岐させる。次の4つのパターンがある。
そしてこれが実際のスクリプト。
- 〔解説①A〕
値が「0」の場合。
PCの向きフラグの値を1(↓向き)にし、マップ移動データ上のPC位置を一歩下へ移動した位置(移動前の位置+マップ移動データ1行数)に変更する(ex参照)。そして、実際に一歩下へ移動させるため「Fido」フレームへgotoする。
(ex)移動前のマップ移動データ上のPC位置を100とした場合、一歩下へ移動すると、100+21=121となり、マップ移動データ上のPC位置は121に書き換わる。
- 〔解説①B〕
値が「1」の場合。
移動先に障害物があり進入できないので、PCの向きフラグの値を1にするのみ。終了処理を行うため「Fstp」フレームへgotoする。
- 〔解説①C〕
値が「2」の場合。この場合は、移動先に障害物があり進入できない+左方向へ回避移動なので、ここではその処理を行っている。
まず初めに、PCがすでに正面(↓方向)を向いているかPCの向きフラグの値をチェックし、その値が1なら、左方向への回避移動を行うため「L」フレームへgotoする。しかし1以外なら、PCが正面以外を向いている時に8キーを入力されているので、PCが正面を向くのみで終了する。PCの向きフラグの値を1にする。そして終了処理を行うため「Fstp」フレームへgotoする。
- 〔解説①D〕
値が「3」の場合。
基本的な処理内容は〔解説①C〕と同様で、右方向への回避移動となり、goto先は「R」になる。
【スクリプト②】の解説
ここでは、実際にPCを下方向へ移動させている。PCを下方向へ16pixel移動させると共にマップを上方向へ16pixelスクロールさせると、PCを画面の真ん中に保持したまま一歩下方向へ進むことになる。
【スクリプト③】の解説
移動終了となり、移動ウエイトを0に戻しておく。これにより、移動キーの入力が再び有効となる。
(5)そしてPCは移動し、マップの端でSTOP!
移動キーが入力され、前項(4)の処理によってPCは移動し、やがてマップの端に着く。この時、それ以上進めないようにしないと、PCはマップの端を通り過ぎて存在しないダークゾーンへ突入してしまう。しかし、この処理は簡単で、というか、マップ移動データの外周は全て1にしてあるので、前項(4)の処理によって、PCは必然的にマップの端で止まることになる。
…ということで、今回は終了!
次回まで、皆さんもオリジナルマップを作ってPCを移動させてみてはどうでしょう?
マップ移動データで進入可不可の設定(0、1、2、3)をするだけで、すぐに歩き回れるマップになるので、街とかダンジョンとか作って動き回ってみるのも面白いかも!?
それでは、また!