サイログ。

~雑多な記事置き場~

Collisionクラスのインタフェースを簡略化

MiyakoのCollisionクラスですが、以前までの引数が怒濤のようなもので、作った本人さえも辟易するほどでした(ヲイ)。
このままではイカーン!ということで、Collisionクラスのインタフェースを作り直しました。

  1. posプロパティ(コリジョンが存在する位置、スプライトのX/Y座標と同じ。配列もしくはPointクラスのインスタンス)を追加
  2. directionプロパティを追加(-1/0/1の2要素の配列。X/Y座標の移動方向を決める)
  3. 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)

ああ、これで、いちいちなが〜い引数リスト書かずにすむ(自分がかよ(笑)!)