ゲーム 2013/03/20 AS3横スクロールアクションゲーム制作25 2Dアクションゲーム制作第25弾。 今までアクションゲームを何度か作っていて 一番やってみたい内容のひとつが『坂道』のあるゲームでした。 前回までとの違いは ・『坂道』概念の実装 ・主人公のジャンプ処理を微調整 ・主人公の歩行処理を微調整 ・キーを押した瞬間にのみジャンプor攻撃が出来る仕様に変更 (↑今までは押し続けると、ジャンプor攻撃をし続けた) ↓坂道に関しては今まではこんな感じ。 ブロックや床の判定が90度刻みの判定の取り方しか わかりませんでした。ファミコンの初代スーパーマリオ なんかもこんな感じじゃないでしょうか。 ↓今回からこんな感じになりました。 マリオシリーズでいうとスーパーマリオ3以降の作品は坂の概念があると思います。 ネット上にあるFlashのゲームをやってると 坂道の概念があるゲームが多いので、AS3に向いているのかもしれません。 坂道の処理を追加するにはブロックや床を四角形の判定ではなく ブロックのシルエット(輪郭)そのものを判定にしなければいけません。 AS3でいうと『.hitTestPoint(x座標,y座標,true)』にあたります。 これを利用して ①キャラクターが空中での落下中に坂道に接触した瞬間 坂道にめり込んだぶんをwhile文で坂道の外側へ押し出す。 キャラクターを「空中にいる」から「地上にいる」というフラグに切り替える ②キャラクターが坂道に着地しており「地上にいる」というフラグの間は while文を使って、坂の面に密着させ続ける。 これで坂をのぼったり下ったりする表現が可能になる。 ③坂道が複数存在する場合、for文を使って配置したすべての坂道を参照。 キャラクターがどの坂道にも着地していない場合は キャラクターが「地上にいる」から「空中にいる」というフラグに切り替える …という感じにコードを書いていくと、坂道の処理が可能になりました。 ちなみに今までは全ての ・ブロック(床を含む) ・敵キャラクター ・アイテム ・イベント開始判定 は、コードを入力して配置する『動的な配置』でしたが、 これからはライブラリからドラッグ&ドロップで配置する『静的な配置』 に切り替える予定です。この方がバグが見つかりやすいですし 作ってて楽しいのでメリットがいっぱいあります(´ω`人)