忍者ブログ

幻日記

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

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

少し進化を遂げました。
操作方法に関しては全く変らないのですが一応書いておきますね。
カーソルキー←→…移動
カーソルキー↑……ジャンプ
スペースキー………攻撃(アイテム未所持の場合は素手、持ってる場合は飛び道具)

実装された点を挙げますと2点。
・デバッグ用ウィンドウ(正式な名前が分らない)の実装。
 これでゲーム中に使う変数が全て表示できる。traceする手間も省ける。
 画面右に変数を表示してるウィンドウが出てる訳ですが…
 赤い敵が邪魔で見えない(つω・)
 敵を倒せば見えるのですが…大した問題でもないのでこのまま直さないと思います。
 ゲームが完成したらもちろんこのウィンドウは消す事になります。

・様々な方向へ攻撃できるようになった
 一応現段階では操作の問題で←か→へしか攻撃できないのですが
 プログラム的には360度の方向へ攻撃が可能です。
 初めて三角関数使ったなぁ…。全然意味分らなかったけど。
 最終的に8方向ぐらい攻撃できるようにしようかなーと思っています。
 三角関数は昔学校で習ったのですがイマイチ理解できなかったので
 もう一度勉強し直そうかと思います。

今回大きなエラーがあったのですが、原因がよく分らないまま解決して進行しています。
弾や攻撃が消えた瞬間に
「なんだコノヤロウ!null参照するなバカヤロウ!コマネチ!」…って言われます。
徹夜してプログラミングしているせいもあってもっと簡単なミスを見落としてるのかも…。
今日はあまりエラーに関しては模索しないようにします。
(下手にいじってもっと酷くなるのも怖い)

デバッグウィンドウ見てたら「stage.widh」の値がどんどん大きくなるのはなんで…?
背景の雲のアニメーションが凄く無理のある仕様にしているのが原因だと思うのですが。

メモ程度に今回追加したプログラムの一部を載せておきます。
左下の「プログラムを表示」をクリックして表示しますだ。

↓デバッグ部分のプログラム

    //デバッグ用-------------------------------------------
    
    debugText.text =
    "stage.width(ステージの横幅)" + stage.width + "\n" +
    "stage.height(ステージの縦幅)" + stage.height + "\n" +
    "\n" +
    "left_flg(←を押している)" + left_flg + "\n" +
    "right_flg(→を押している)" + right_flg + "\n" +
    "up_flg(↑を押している)" + up_flg + "\n" +
    "down_flg(↓を押している)" + down_flg + "\n" +
    "space_flg(スペースを押している)" + space_flg + "\n" +
    "\n" +
    "vx(主人公横加速度)" + vx + "\n" +
    "vy(主人公横加速度)" + vy + "\n" +
    "delay(攻撃のディレイ)" + delay + "\n" +
    "j_flg(ジャンプフラグ)" + j_flg + "\n" +
    "weapon(選択中の武器)" + weapon + "\n" +
    "timer(ゲームの時間軸)" + timer + "\n" +
    "rot(主人公の向き)" + rot + "\n";
    
    //デバッグ用-------------------------------------------




↓弾のプログラム

var life:int = 1;//弾の耐久力
var dx:int = MovieClip(root).Syuzinko.x;//dxは弾の方向を表す。
var dy:int = MovieClip(root).Syuzinko.y;//主人公の向きに依存する
var rot:int = MovieClip(root).rot;//発射時の主人公の向きを保存
dx = Math.cos(MovieClip(root).rot * Math.PI/180) * 32;//xへの移動量
dy = Math.sin(MovieClip(root).rot * Math.PI/180) * 32;//yへの移動量


addEventListener(Event.ENTER_FRAME,
    function(event:Event):void{
        x += dx;
        y += dy;
        rotation = rot;
//        rotation = MovieClip(root).rot;
    }
);

拍手