« いい加減 | メイン | いかん »

現時点決定事項メモ051012

現時点決定事項メモ051005の続き。

【入力処理】
・前回と同じようにManagedDirectInputで処理
・入力処理は別スレッドで走らせる

低 DirectInput
| ラッパー(各ボタンレベルで管理)
高 InputManager (各ボタンを機能名にマッピング)

・InputManagerの処理方法
・前回強引にOPだけ別処理にしたらスパゲッティった
・キーの状態を格納したオブジェクトを
 デリゲート呼びだしする
・OP、ステージ開始前、ステージ中、
 ポーズ中、ステージ後、コンティニュー確認、ED等で
 呼び出すデリゲートを変えることで実装

【スプライトのデザイン】
・SpriteLayerクラス : IDisposableインターフェースを実装
Direct3D.Spriteインスタンスを内包する
描画要求情報をキューに保持する
一括描画命令を受けてキューの中身を描き出す
基本的に毎フレームごとにキューをクリアする

・描画要求情報
・DrawRequestクラス
Direct3D.Textureインスタンス、
テクスチャ上の使用する領域を持つRectangle、
描画先の左上の点を示すPointを持つ
<< アルファ値を持たせるかどうか微妙なところ? >>

【あたり判定グリッドのデザイン】
・CollisionGridクラス
キューを内包し、あたり判定を行い
オブジェクトに通知を行う

・衝突の検知方法
→座標とあたり半径から距離ベースでの計算
→レーザー等は別処理にする必要がある

・衝突の通知方法
→ICollidableインターフェースで処理

・あたり判定のパターン
自弾 vs 敵OBJ → 消滅/ダメージ
自機 vs 敵弾 → 死亡/消滅
自機 vs 敵OBJ → 死亡/なにもなし
自機 vs アイテム → アイテム処理/消滅

整理すると:
自弾/敵弾 = 当たっても当てられても消滅
自機 = 相手がアイテムならアイテム処理
    そうでないなら死亡
敵OBJ = 当ててきたOBJの攻撃力分ダメージを受ける
アイテム = 消滅

→自機 vs 敵OBJ では、自機の攻撃力=0とすればよい

・インターフェースだけで統一的に処理するために:
・アイテムならアイテムの種類、弾なら攻撃力などの
 パラメータを取得する方法が必要
・同様に距離計算を行うために座標/あたり半径を
 取得する方法が必要

・よって、ICollidableインターフェースは
void ICollidable.Collide(object param);
object ICollidable.GetCollideParam();
PointRadius ICollidable.GetInfo();
となる。

・円におけるRectangleみたいな実装
→PointRadiusクラス
座標位置と半径を持ち、PointRadiusインスタンス間で
領域が重なっているかどうかを判断する
bool PointRadius.Intersect(PointRadius);
を実装すればよりスマートに


・ToDo:
音の考慮
いい加減キャラクタのベースクラスを設計する
グラフィックアニメーション処理
ステージ処理

投稿者 Zawa : 2005年10月12日 09:02

トラックバック

このエントリーのトラックバックURL:
http://zawa.s18.xrea.com/x/mt-tb.cgi/64

コメント

コメントしてください




保存しますか?