忍者ブログ

幻日記

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

[PR]

×

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


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

AS3ゲーム制作第15弾。
前回の14弾目と比べて大幅にバージョンアップ!…のつもり(・ω・`)
見た目は大して変ってないのですが、細かい微調整を加えてます。


操作方法:
・移動 ……………………………… カーソルキーの← →
・ジャンプ ………………………… Z
・攻撃 ……………………………… X(武器取得後は飛び道具に変更)
・デバッグ画面の表示、非表示 … デバッグ画面をクリック

今回から敵の攻撃モーションに当たり判定をつけたので
主人公がダメージを受けるようになりました。
あくまで敵が攻撃中に触れるとダメージになるので、
敵が普通に歩いてる時は触れてもダメージにはなりません

詳しい変更点、今後の修正点、実装予定については
左下の「続きを表示する」で表示致しますだ。
長文になりますが、ご興味ある方はどうぞ。

拍手


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

AS3でのゲーム制作。作っているゲームは横スクロールアクションです。
今回の記事ですが、かなり個人的な内容でして
自分用のメモになっております(=ω=`;)
あまり興味の無い方はスミマセンがスルーしてやってくださいな。


現在、主人公が敵から攻撃を受けた際の処理について考えていたのですが
一般的な横スクロールアクションと違って
大乱闘スマッシュブラザーズを参考に作っていこうと考えています。

■特徴:
 ・被ダメージ時、のけぞりモーションが存在する
 ・のけぞりモーション中であっても無敵時間は存在しない
 ・連続技でない限り、同じ敵の同じ技で2回ダメージをくらうことはない
 ・現段階で「ダウン」の概念はない。

簡単に仕上げようと思うとマリオみたいない感じで
 ・被ダメージ時、被ダメージモーション(のけぞり)を取る
 ・モーション後、主人公を一定時間無敵状態にする
 ・無敵中の際、グラフィックは点滅or半透明に
という感じになると思いますが、あえてスマブラ方式にします。

…スマブラというよりテイルズっぽいような(´・ε・`)



主人公が敵から攻撃を受け「のけぞりモーション」中になった場合、

ふたたびその攻撃判定に触れることがあっても

ダメージを受けないようにする。

ちなみに敵は同じ種類の型が複数存在するものと考える。
 

■パターンA:主人公を含め、味方が複数いる場合:

 ①敵が攻撃をした際、それが何度目の攻撃なのかを記憶する

 ②主人公が攻撃を受けた際に

  ・どの敵から攻撃を受けたか

  ・何度目の攻撃を受けたか

 を調べて、配列に記憶する

 ③主人公は同じ敵&同じ回数の攻撃は受け付けないものとする



■パターンB:必ず味方が主人公のみの場合(非推奨)

 ①主人公が敵から攻撃を受けた際、その当たり判定を消す




事前に作っておかなければならないこと:
①主人公ののけぞり中のグラフィックを作る
②「どの敵から攻撃を受けたか」と「何度目の攻撃を受けたか」を記憶させておく
 配列を用意する。

拍手


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

AS3ゲーム制作第14弾!
今回から操作方法を少し変えました。

今まで↑キーでジャンプ、スペースで攻撃でしたが
ZキーでジャンプXキーで攻撃になります。

最初に表示されるのはタイトル画面です。
左の青を押すとBGMアリでスタート、
右の赤を押すとBGMなしでスタート。

操作方法:
←→(カーソルキー) … 移動
Z … ジャンプ
X … 攻撃


変更点&修正点:
・敵が攻撃動作を行うようになった:
主人公が敵の視界に入って一定時間が経過すると攻撃してきます。
敵の前方に表示される薄くて赤い四角が敵の視界です。けっこう遠くまで見えないのよ。
あくまで敵は攻撃モーションを行うだけなので主人公はダメージをくらいません
あたり判定はないのでご安心下さい(´ω`人)
これまた主人公側が一歩的に叩き放題です。
それにしても敵のグラフィック、カービィにソックリ。

・敵の振り返り処理の修正:
前回のデータをよーく見てると
左上の敵の挙動がおかしかったので調べてみました…。
どうもよく見るとブロック1つぶんで振り返り動作をしてました。
きちんと「目の前に壁がある」or「移動先に床が存在しない」時のみ振り返るように
修正しました(`・ω・´)

・デカいブロックを追加:
通常の2倍サイズのブロックを追加しました。ただそれだけです(´・ε・`)
ただ、このブロックを追加する際、色々な不具合が見つかったのでかなり苦労しました。

オブジェクト同士の衝突を調べる「.hitTestObject()」って関数があるのですが
比較する対象を「gotoAndStop」なんかでフレームの移動をさせていると
判定に不具合が出ます。詳しく調べてませんが、間違えて
全フレームの中で一番大きなサイズを比較してしまうようです。

・一部のサウンドの音量を調整:
タイトル画面からゲームスタートする際の「ピッ!!」って音が
あまりにもうるさすぎるので音を小さめに変更しました(´ε`)

拍手


AS3横スクロールアクションゲーム制作13.5(メモ)

現在製作中のゲームの敵の動作についてのお話です(・ω・人)
自分用のメモのようなモノなので内容がちょっと意味不明かもしれません。

現在敵は左右へ動くだけですが、主人公が近づくと攻撃を行うように設定しようと思います。
「距離が近くても壁を挟んでいる状態であれば攻撃を行わない」という設定も加えられたら
ベストなのですが、処理が重くなると思うので単に距離が近いと攻撃モーションに入るように
したいと考えております(・ω・`)



敵の攻撃モーションにまつわるコード:
01.png
①「攻撃準備判定」を作る。同時に専用の配列も用意する

②敵を作成時に「攻撃準備判定」も同時にaddChildする

③「攻撃準備判定」は常に敵と重なる状態にx位置、y位置を調整する

④主人公と「攻撃準備判定」が重なるとdelayをデクリメントする

⑤delayが0になると敵が攻撃モーションに入る

⑥攻撃モーションが終了すると、delayを増加させる

⑦敵が死亡した場合、同時に「攻撃準備判定」をremoveChildする

更に欲を言うとこんなシステムも欲しいなーとか考えてます。

敵が主人公を発見して戦闘態勢に入るコード:
68965f97.png
①「発見判定」を作る。同時に専用の配列も用意する
②一定間隔で「発見判定」を、敵本体から発射させる
③「発見判定」は、一定時間飛び続けると途中で消滅する
(↑視野が広い敵ほど、消えるまでの時間が長い)
④「発見判定」はブロック(壁)を貫通することは出来ない
⑤「発見判定」が主人公に接触した場合、敵は戦闘態勢に入る


これらを組み合わせると
6e04f3a5.png
①敵が主人公を発見する
②敵が戦闘態勢に入る
③主人公が敵に近づくと攻撃を行う
④主人公が隠れるor逃げると戦闘態勢を解除する
のような感じに出来るのですが、
これまた処理が重くなりそうなので考えどころです(´・ε・`)
それほど処理の重さが変らないのであれば実装しますが、現在は
「敵が主人公を発見すると戦闘態勢に入る」というシステムは実装しない予定です。

拍手


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

Flash&AS3ゲーム制作第13段。
今回はまだそれほど変更点はありませんがビジュアルを少し
グラフィカルな感じに変更しました(´・ω・`)b


操作方法(変更無し)
↑    …ジャンプ
←→    …移動
スペース…攻撃(アイテム取得時は弾数無限の飛び道具)

■追加点&修正点:
・タイトル画面でBGMのあり、なしを選択できるようにした
・以下のグラフィックを変更
 ・ブロック
 ・アイテム
 ・空(背景)
・落下速度の上限が無かったので設定てみた
・主人公が高い所から落ちて主人公が消える不具合を修正
・敵に重なっている状態で攻撃をした時に出るエラーを修正

■今後の予定:
・攻撃するキーをスペースでなくXあたりに変更する
・敵が主人公が近づかれると攻撃モーションを加えるように
・主人公、敵のダメージモーション

拍手


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

AS3横スクロールアクションゲーム制作第12弾!
今回はそこそこ変更点が増えています。

■操作方法(前バージョンとほぼ変更なし)
←→   … 移動
↑     … ジャンプ(押す長さによって飛距離が変る)
スペース … 攻撃(アイテム取得時は弾数無限の飛び道具)


■修正点:
・主人公のジャンプ速度の変化:
以前より落下速度が速くなりました。今までは
ショートジャンプと普通のジャンプの2種類だけでしたが、
押す長さによってジャンプの高さが微調整出来るようになりました。
ジャンプに関しては以前よりマリオっぽさが強くなっていると思います。
ただ、以前よりもシビアな操作感覚になっているので、場合によっては
今までと同じ風にふんわりジャンプに戻すかもしれません(=ω=;)

・主人公の物理攻撃の位置を変更:
以前は攻撃モーション(辺り判定)が主人公にめり込んでいて見えにくかったのですが
主人公より前側に移動したので見易くなって、敵にヒットしやすくなりました。

・敵をリニューアル:
今までは赤い四角が中に浮いてるだけでしたが、敵らしい見た目と動きを与えました。
変更点は以下の通りです。
 ・アニメーション付きのグラフィックの実装
 ・重力の概念を追加
 ・条件を満たすまでは歩き続ける
 ・崖、壁、画面の隅へ到着すると向きを反転して再び歩行する
けど、あいかわらず攻撃してきません。一方的に攻撃しほうだい状態(´ω`)

・弾がブロックを貫通しなくなった:
基本的に弾はブロックを貫通しない予定でした。
ライフル的な武器だけ貫通するようにしたいです(´・ε・`)


■確認しているバグ、不具合:
・高い所から落ちると主人公が消える事がある
・敵に攻撃を当てるとエラーが出る事がある
・敵に重なっている状態で銃を撃つとエラーが出る
 (エラーはスルーされるので、ここでは特に問題無し)
・低い位置で主人公がブロックに頭をぶつけると
 主人公が一瞬地面にめり込むため、横加速度が0になってしまう

拍手


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

AS3ゲーム制作記録第11弾目。
今まで主人公は黒い●だったのですが、今回からきちんとノイズウサギにしました。
他にも微調整をちょこちょこ。
※クリックで開始。音が鳴るので注意してください

操作方法(特に変更はありません):
←→  …移動
↑    …ジャンプ(短く押すとショートジャンプ)
スペース…攻撃(アイテム取得時だと飛び道具に。飛び道具は弾数無限)

主人公グラフィックを一新
・キャラクターのアニメーション
・「左向き」&「右向き」の概念
まだ仮状態なのでアニメーションは常に歩行状態。
これからまた「立ち」「攻撃」「ダメージ」などを作っていきます。
ちなみに左向き、右向きのグラフィックは左右反転していません。
左右対称のキャラクターじゃないので2種類描いてます(・ω・`)エッヘン
ちなみに物理攻撃のモーションが主人公にめり込んでて見えないのは
修正の仕方に迷っているからです。コード見てて思ったけど何通りかあるみたい。

辺り判定の調整
主人公が以前より大きくなったので、より正確な辺り判定が必要になりました。
ここが一番苦労したかなー(´・ε・`)
行き当たりばったりに進めてるので判定は目視。トライ&エラーの嵐でした。
最初はブロックをすり抜けてしまうことが多かったのですが、現在元に戻りました。

タイトルが面のBGMを削除
いきなりBGMが鳴るのが嫌な方もおられるはずなので
タイトル画面のBGMのみを消しています。
そう言えば自分の持っているゲーム(スマブラ、カービィ、バイオハザード、ソウルキャリバー等)を
プレイしてて思ったのですが、タイトル画面って無音なのが多いですよね。
アレってなんででしょうかね。例に習ってゲームが完成してもタイトルは無音にするかも。

拍手



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

Flash+AS3で作る横スクロールアクションゲーム
今回実装したのは横スクロールです。
これがないと横スクロールとは言えないですよね。


以前と全く操作は変ってませんが…
 ←or→ …移動
 ↑    …ジャンプ
 スペース…①アイテム取得前だと殴り ②取得後だと飛び道具

前回のまとめを参考にコードを打っていくとワリに簡単に仕上がりました。
気休め程度に書いてたつもりだったのですが、案外役に立ちました(・ω・)b

まだ直していない不具合として、地面に置いてあるブロックに主人公が
ぶつかりつづけると画面だけ徐々にスクロールしてしまいます…!
この原因は大体わかってるつもりです。
「画面をスクロールするのは主人公が移動中の場合のみ」という記述になっていて
主人公がブロックにめり込み、位置修正をした場合のスクロールを行っていないのが
原因だと思います。


今後実装していく内容
①敵を本格的に作る(移動、攻撃)
②タイトル画面の実装
③SE・BGMの実装
④主人公と敵のあたり判定
⑤ポスター制作


一応メモとして残したいのでコード部分の一部を載せておきます(´=ω=`)b

拍手


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

Flashのゲーム制作が途中な訳ですが
今度は画面を横へスクロールさせるプログラミングを作ろうと考えております。
内容は↓こんな感じにする予定です。
プログラミングした事無い方は意味不明かも。
難しいことをしてるんじゃなくて日本語が下手なだけです。
ゴメンちゃい。ただメモなんですたい(つω・)

■環境
・スタート地点(主人公の初期位置)はマップの左端とする
・主人公は基本的に右方向へ進む
・現在の予定では縦スクロールはないものとする

■変数を定義する
・画面が左端、中間(左端でも右端でもない状態)、
 右端の状態を表すint型の変数を作る。変数名はSCXとする。
 変数名は「Screen X(横のスクリーン)」の略。
・マップ上の主人公のx座標を表すdouble型の変数を作る。
 変数名はscroll_xとする。
 (↑画面中の主人公のx座標とは異なる)

■変数の役割、意味

・SCXは-1が左端、0が中間、1が右端の状態を意味する。
・scroll_xは主人公のx軸と同じで、主人公が右へ移動するたびに増加する。
 ただし、SCXが0の場合は主人公のx座標は画面の中央に固定させる。
・SCXが-1の場合に(主人公のx座標 > 画面の幅÷2)を満たした場合、
 SCXに0を代入する。

・SCXが0の場合、scroll_xが決められた数値に達すると、SCXに-1か1を代入する

・SCXが1の場合に(主人公のx座標 < 画面の幅÷2)を満たした場合、
 SCXに0を代入する。


こういう内容を入力していけば横スクロールが可能になるはずです。
今までスクロールするゲームを2回作った事があるのですが
どちらもこの手法を使ってます。

拍手