Collisionクラスのインタフェースを簡略化
MiyakoのCollisionクラスですが、以前までの引数が怒濤のようなもので、作った本人さえも辟易するほどでした(ヲイ)。
このままではイカーン!ということで、Collisionクラスのインタフェースを作り直しました。
- posプロパティ(コリジョンが存在する位置、スプライトのX/Y座標と同じ。配列もしくはPointクラスのインスタンス)を追加
- directionプロパティを追加(-1/0/1の2要素の配列。X/Y座標の移動方向を決める)
- amountプロパティの追加(移動量。これも、X/Y座標に対応した配列もしくはSizeクラスのインスタンス)
位置や移動量は、上記プロパティを操作することで判定に使用します。
また、以前はほとんどクラスメソッドだけでしたが、1.5ではインスタンスメソッドも追加しました。
# collision? # あたり判定が重なっているかの判定 Collision#collision?(c2) Collision.collision?(c1, c2) # collision_with_move? # 新規追加メソッド # 移動した後のあたり判定を行う Collision#collision_with_move?(c2) Collision.collision_with_move?(c1, c2) # meet? # あたり判定がぴったりくっついているか # (重なってはいない)の判定 Collision#meet?(c2) Collision.meet?(c1, c2) # into? # 当たり判定が移動後にもう一つの当たり判定に重なるかの判定 Collision#into?(c2) Collision.into?(c1, c2) # out? # 当たり判定が移動後にもう一つの当たり判定から離れるかの判定 Collision#out?(c2) Collision.out?(c1, c2) # cover? # どちらかの当たり判定が、もう一方を囲んでいるかの判定 Collision#cover?(c2) Collision.cover?(c1, c2)
ああ、これで、いちいちなが〜い引数リスト書かずにすむ(自分がかよ(笑)!)