忍者ブログ

幻日記

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

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

AS3の勉強に以前神経衰弱のゲームを作ってみましたが
今回はアクションゲームのプロト版を作ってみました。

↑黒い●の周辺をクリックしたら操作できます

操作方法:
  ↑ ・・・・・・ジャンプ
← →・・・・・・移動

特徴:
・左右への移動、ジャンプが可能
・ジャンプはやや高め
・画面外へは移動できない
・急な停止、方向転換は苦手
・ただし←と→を同時押しすることで素早く停止が可能


いつか自分が見た時に役に立つかもしれないので
中身のコードをすべて書いておきます。
if文が無駄に多くてプログラミングが得意な方が見たら
失笑するような内容かもしれません。
プログラミングそこまで得意ではないのでご了承ください(つ皿`)
一部で有名かと思いますがこちらのサイトを参考にさせて頂きました。
キーの同時押しの仕方が分らなかったのでとても助かります。

var left_flg  : Boolean = false;
var right_flg : Boolean = false;
var up_flg : Boolean = false;
var vx : Number = 0;
var vy : Number = 0;
var j_flg : Boolean = false;
 
// キーが押されたときに呼ばれる
stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDownFunc);
function KeyDownFunc(event:KeyboardEvent):void{
if(event.keyCode == 37){
left_flg = true;
}
if(event.keyCode == 39){
right_flg = true;
}
if(event.keyCode == 38){
up_flg = true;
}
}
 
// キーが離されたときに呼び出される
stage.addEventListener(KeyboardEvent.KEY_UP, KeyUpFunc);
function KeyUpFunc(event:KeyboardEvent):void{
    if(event.keyCode == 37){
        left_flg = false;
    }
if(event.keyCode == 39){
        right_flg = false;
    }
if(event.keyCode == 38){
        up_flg = false;
    }
}
 
// フレームごとに実行されるイベント
stage.addEventListener(Event.ENTER_FRAME, function(event:Event):void{
if(left_flg && right_flg){//←→同時に押してる場合
if(vx<1 && vx>-1){
vx=0;//加速度が0に近づくと完全に停止させる
}else{
vx+= -vx/2;//加速度を減らしていく
}
}else if(left_flg && vx>-10 && Syuzinko.x-Syuzinko.width/2 > 0){//←を押す
        vx -= 0.5;
}else if(left_flg && vx>=-10 && Syuzinko.x-Syuzinko.width/2 > 10){//←を押す(ダッシュ時)
vx = -10;
}else if(right_flg && vx<10 && Syuzinko.x+Syuzinko.width/2 < stage.stageWidth){//→を押す
vx += 0.5;
}else if(right_flg && vx<=10 && Syuzinko.x+Syuzinko.width/2 < stage.stageWidth-10){//→を押す(ダッシュ時)
vx = +10;
}else{//何も押していない場合
if(vx<1 && vx>-1){
vx=0;//加速度が0に近づくと完全に停止させる
}else{
vx+= -vx/4;//加速度を減らしていく
}
}
 
if(up_flg && !j_flg){
vy -= 30;//ジャンプさせる
j_flg = true;
} else if(j_flg) {//空中に居る場合
vy+=1.5;//落下させる
if(Syuzinko.y > stage.stageHeight-5-Syuzinko.height/2){//地面に着地したら
vy = 0;//停止させる
Syuzinko.y = stage.stageHeight-Syuzinko.height/2;
j_flg = false;
}
}
 
Syuzinko.x += vx;//主人公を動かす
Syuzinko.y += vy;
trace("■-----------------------------")
trace("主人公x = " + Syuzinko.x);
trace("主人公y = " + Syuzinko.y);
trace("主人公vx = " + vx);
trace("主人公vt = " + vy);
trace("■-----------------------------")
});

プログラミング自体久しぶりなのですが
アクションゲームのプログラミングは1年ぶりです。

以前こおなごが主人公のアクションゲーム(もどき)を作った事があるのですが
今回はFlashでノイズウサギが主人公のゲームを作ってみたいなー。

拍手