忍者ブログ

幻日記

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

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


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

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

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

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

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

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

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

拍手


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

一時中断していたAS3ゲーム制作ですが、再び手を出しました。

時間をおいてプログラム見ると殆ど忘れてしまって大変(つω・)
ほぼ前回と変らないのですが、一応修正点があります。


移動…カーソルキー(←→移動、↑ジャンプ)
攻撃…スペースキー

紫の四角…足場
赤い四角…3回攻撃をあてると消滅する。主人公との辺り判定はなし
黄色と茶の四角…アイテム。主人公が触れると飛び道具が使用可能



以前は横移動の加速度がMAXの時に画面外へぶつかると
主人公が地面をすり抜けて地球のマントルへ向けて落ちて行くという
ありがちなミスがあったのですが、ちゃんと落ちないように直しました。
「画面外へ移動しそうになったら主人公を画面内へ戻させる」
って処理が移動キーを押してる間しかきかないようになってたんですよねぇ。

拍手


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

操作方法:
↑…ジャンプ。押す長さ長さによって変ります
←→…移動。同時押しでブレーキ
スペース…攻撃、アイテムを取った後だと飛び道具になります

攻撃はスペースキーで統一しました。
左に浮かんでいる黄色いアイムを取ってからスペースを押すと
物理攻撃から飛び道具に変ります。
今の所↓キーは使わない感じに戻ってしまいましたが
後々アイテムを拾うキーなんかに振り当てようかな、と考えてます。

今回の大幅な変更点はブロックの概念を取り入れたこと。
空中に浮いてる黒紫の■に乗ることができます。
まだ判定が甘い感じですが今の所このままで進めようかと思います。
床の緑の部分もブロックに書き換えました。
これだけで1日が終わってしまったとは自分でもビックリ。

以前TonyuSystemでブロックの概念を作った時は
それほど難しくなかったんだけど、今回は
「主人公の足元にブロックが存在する」という状態を認識するのに
for文や配列を使わないといけなかったのがミソ。

↓これから実装していく予定など
・現在、攻撃は右方向に固定されている。左や上にも攻撃できるように進行
(Shiftを押している間は主人公を固定させ、全方向に攻撃を打てるようにしたい)
・必要であれば画面をスクロールさせるコードを追加させる
・敵を具体化させ、重力の概念、攻撃の概念を加える
・キーの↓を押すとアイテムが拾えるようにする
・飛び道具がブロックを貫通しないようにする
・主人公の回避or防御モーションの追加

個人的にはスマブラやデッドライジングっぽい要素を付け足していきたいです。

拍手


AS3横スクロールアクションゲーム制作 次の目標

最近イラスト関係の投稿少ないけどいいのかなぁ。

作りかけのゲームの話だけど
主人公ののグラフィックをウサギさんに変えたらこうなるのかしら。
d59338b3.png

今後実装する部分をリストアップしておきます
・現在、攻撃は右方向に固定されている。左や上にも攻撃できるように進行
(Shiftを押している間は主人公を固定させ、全方向に攻撃を打てるようにしたい)
・辺り判定のある足場、壁(ブロック)を追加させる
・必要であれば画面をスクロールさせるコードを追加させる
・敵を具体化させ、重力の概念、攻撃の概念を加える

拍手


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

↑…ジャンプ。短く押すと小ジャンプ
←→…移動。同時押しでブレーキ
↓…物理攻撃
スペース…飛び道具

攻撃、ジャンプ共に連射機能アリ。押し続けると連発します。
ただ攻撃に関してはディレイ(タメ時間)を用意しています。
飛び道具にショットガン、ライフル等を実装した場合、
もっとディレイが長くなりそうです。
逆にマシンガン系はもっと短いんだろうね。



前回からの追加点
・アイテム追加:
左下に落ちてる青い物体がアイテム。
触れるとアイテム自体が消えて
装備スロット※(←後で詳細を記述)に追加される

・物理攻撃:
矢印キーの↓で右側へ攻撃が出来ます。
小さすぎてイマイチ見えないかと思いますが敵に攻撃を当てたら消えます。

・HPゲージ:
左上の赤いバーのこと。
今の所主人公のHPが増減する処理が無いので飾りのようなモノ。

・SPゲージ:
左上の青いバーのこと。時間で徐々に回復します:
「必殺技ゲージ」みたいな感じにする予定です。

・装備スロット:
アイテムを拾うと左上の黄色い部分に運ばれます。
ポケモンで言う「どうぐ」にあたる部分。
この部分は異常に効率の悪いコードを書いているので
改善していきたいところ。

ゲージに関してはこちらのページのページを参考にしました。
マスクは使ってませんが根本的には一緒。

追記:
装備スロットのコードで
一部スクリプトに思い通りに動かなかった処理があったのですが、
何とか思い通りにいきました!
修正箇所もかねてメインのフレームアクションを公開します。
キーワードは「MovieClip(getChildByName(”インスタンス名”)+変数)」でした。
左下の「スクリプトを表示」からどぞー

拍手


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

朝からコードを書いてたら「1発目の弾が消えたら2発目以降の弾も全部消えてしまう」
という謎の現象に戸惑っていました。
こんなページこんなページを参考に直しました。本当に助かります。
あんまりにも気になるので学校をサボってまで家で修正しました。
今日は学校で就活のガイダンスとガイダンスの予約をしないといけない日だったのに…。
大丈夫なんだろうか。
(↑どちらも自主参的に参加するガイダンスなので
 『ガイダンスに出ないと就職できない!』なんてことは無いけど)

そんな訳で
さらに進化を遂げました。すこしだけど。

前回同様にスペースで弾が撃てます。今回は画面外へ行ったらちゃんと消えます。
それと同時に敵の判定も作ってみました。
画面の右側に居る赤い物体が敵。今の所主人公が触れても何も起こりません。

敵には体力が設定されていて弾を3発あてると消えます。
弾自体にも寿命があるのだけど
もともと1発あたっただけで消えてしまうのでほぼ意味なし。
ライフルみたいに敵を貫通する弾を実装する際に使う予定です。

今後実装していきたい箇所は
・装備できるアイテム(武器)
・物理攻撃
・主人公の体力
・敵のAI
・地面以外の足場(ブロック?)
どれも頭の中ではコードの組み立て方は分ってるのですが
いざ、書いてみると苦労するんでしょうね。

今回使ったコードも載せておきます。
左下の■■■■■コードを表示■■■■■をクリックで表示します。

拍手


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

AS3でのゲーム制作、ちょっと進行しました。


前回から追加した部分
●大ジャンプ、小ジャンプシステムの実装:
長く押せば大きく、短く押せば小さくジャンプできます。

●スペースキーで飛び道具が使用可能:
主人公から右向きに弾を飛ばします。
こう見えて図形を飛ばしているのではなくムービークリップが飛んでいます。
最初、ムービークリップを発射する方法が全然わからず
何時間も停滞していたのですが、こちらのサイトを見て一件落着。
専門的には「ライブラリから動的にインスタンス」しているそうな。
なんだかよくわかんないけど思った通りに実装できました。
現在は右にしか飛びませんが、後々色々な方向へ打てるようにする予定です。
今までプログラミングで三角関数を使うようなコードを描いたことが無かったのですが
色々な方向へ飛ばしたいならSin、Cos、ラジアンあたりの知識が必要っぽいです。
数学苦手なのになー(つω`)

●壁のめりこみ修正:
前回、実は矢印キーを画面の内側に入力中に外側の壁にぶつかると
主人公が画面外へ出て行ってしまう現象が起こっていたのですが
なんとかストップするようになりました。
それでもまだまだ画面外へめり込んでしまうモノだけど
これに関しては後日修正するのかどうかは曖昧な所。

…あと前回背景が白くて見え辛かったので適当に描きました。
それにしてもAS3に関する情報がネット上で全然手に入らないのが惜しい。
AS2の情報は多いんだけど…殆ど役に立たない(つω;)


そういやこのコードだと、弾を発射したら永遠に飛び続けて
画面外へ言っても消えません。
画面外へ飛んでいった弾を消す方法は「removeChild()」を使うのですが、
上手い事参照できない。理由は解ってるのですがちょっとややこしい。
こういう丁寧な説明を呼んでたら多分わかるとおもいます。頑張るぞー

拍手


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でノイズウサギが主人公のゲームを作ってみたいなー。

拍手


都道府県対戦

「都道府県 ゲーム」で検索したら面白いゲームが出てきました。
その名も都道府県対戦
0af2e357.png
滋賀県民ということで滋賀県でクリア。
信長の野望って実際にやったことないのですが
こういうゲームは大好き。

一応攻略ヒントを載せておきます。
・特に何の兵隊を配置したら良いか解らない場合は槍玉が万能なのでオススメ。
全体的のスピード、リーチで死ににくい。(←ただし中盤まで)
・初期設定の長崎、石川、北海道の場所には県壁を使っておくと後々楽になる
・特に配置する施設が無い場合、大玉召還陣をたくさん配置すること
(最終的には大玉召還陣ばっかりになるけど)
・術の中では水、閃、あたりがオススメ。ただしどちらもタイミングが命。
 後半から意外と火、風を使う場面もあったり。

拍手


MOTHERプレイ進行状況

①主人公の名前、こんだてを設定する
ニンテン 、アナ、ロイド、テディと公式通りに設定。
好きなこんだては「いもぺんき」(※元ネタは「うちの3姉妹」)にした。

②回復するのが面倒なので10回ほど意識不明になりながら墓場へ到着。
回復アイテムはあるけど使うのがもったいないのでボス戦まで温存。

③武器が弱くてなかなか敵が倒せない。
ゾンビがギリギリ倒せる程度。
攻略情報を見たらデパートでバットが買えるらしいけど…。
↑いまここ

拍手