忍者ブログ

幻日記

お絵描き&ゲーム制作好きの ひとりごと日記

AS3横スクロールアクションゲーム制作25

2Dアクションゲーム制作第25弾。

今までアクションゲームを何度か作っていて
一番やってみたい内容のひとつが『坂道』のあるゲームでした。

前回までとの違いは
・『坂道』概念の実装
・主人公のジャンプ処理を微調整
・主人公の歩行処理を微調整
・キーを押した瞬間にのみジャンプor攻撃が出来る仕様に変更
(↑今までは押し続けると、ジャンプor攻撃をし続けた)



↓坂道に関しては今まではこんな感じ。
saka_1.png
ブロックや床の判定が90度刻みの判定の取り方しか
わかりませんでした。ファミコンの初代スーパーマリオ
なんかもこんな感じじゃないでしょうか。

↓今回からこんな感じになりました。
saka_2.png
マリオシリーズでいうとスーパーマリオ3以降の作品は坂の概念があると思います。
ネット上にあるFlashのゲームをやってると
坂道の概念があるゲームが多いので、AS3に向いているのかもしれません。


坂道の処理を追加するにはブロックや床を四角形の判定ではなく
ブロックのシルエット(輪郭)そのものを判定にしなければいけません。
AS3でいうと『.hitTestPoint(x座標,y座標,true)』にあたります。

これを利用して
①キャラクターが空中での落下中に坂道に接触した瞬間
 坂道にめり込んだぶんをwhile文で坂道の外側へ押し出す。
 キャラクターを「空中にいる」から「地上にいる」というフラグに切り替える
②キャラクターが坂道に着地しており「地上にいる」というフラグの間は
 while文を使って、坂の面に密着させ続ける。
 これで坂をのぼったり下ったりする表現が可能になる。
③坂道が複数存在する場合、for文を使って配置したすべての坂道を参照。
 キャラクターがどの坂道にも着地していない場合は
 キャラクターが「地上にいる」から「空中にいる」というフラグに切り替える
…という感じにコードを書いていくと、坂道の処理が可能になりました。


ちなみに今までは全ての
・ブロック(床を含む)
・敵キャラクター
・アイテム
・イベント開始判定
は、コードを入力して配置する『動的な配置』でしたが、
これからはライブラリからドラッグ&ドロップで配置する『静的な配置』
に切り替える予定です。この方がバグが見つかりやすいですし
作ってて楽しいのでメリットがいっぱいあります(´ω`人)

拍手