現時点決定事項メモ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