Class: Miyako::CollisionEx
- Defined in:
- lib/Miyako/API/collision.rb
Overview
位置情報付き矩形当たり判定領域(コリジョン)クラス
コリジョンの範囲は、元データ(スプライト等)の左上端をとして考案する コリジョンで使用する値は、実数での設定が可能
Instance Attribute Summary collapse
-
#pos ⇒ Object
readonly
コリジョンの位置(Point構造体).
Attributes inherited from Collision
#body, #center, #radius, #rect
Class Method Summary collapse
-
.collision?(c1, c2) ⇒ Boolean
当たり判定を行う(領域が重なっている) c1:: 判定対象のコリジョンインスタンス(1) c2:: 判定対象のコリジョンインスタンス(2) 返却値:: 1ピクセルでも重なっていれば true を返す.
-
.cover?(c1, pos1, c2, pos2) ⇒ Boolean
当たり判定を行う(どちらかの領域がもう一方にすっぽり覆われている)) c1:: 判定対象のコリジョンインスタンス(1) c2:: 判定対象のコリジョンインスタンス(2) 返却値:: 領域が覆われていれば true を返す.
-
.covered?(c1, pos1, c2, pos2) ⇒ Boolean
当たり判定を行う(c1がc2に覆われている) c1:: 判定対象のコリジョンインスタンス(1) c2:: 判定対象のコリジョンインスタンス(2) 返却値:: 領域が覆われていれば true を返す.
-
.covers?(c1, pos1, c2, pos2) ⇒ Boolean
当たり判定を行う(c1がc2を覆っている) c1:: 判定対象のコリジョンインスタンス(1) c2:: 判定対象のコリジョンインスタンス(2) 返却値:: 領域が覆われていれば true を返す.
-
.meet?(c1, pos1, c2, pos2) ⇒ Boolean
当たり判定を行う(領域がピクセル単位で隣り合っている) c1:: 判定対象のコリジョンインスタンス(1) c2:: 判定対象のコリジョンインスタンス(2) 返却値:: 領域が隣り合っていれば true を返す.
Instance Method Summary collapse
-
#collision?(c2) ⇒ Boolean
当たり判定を行う(領域が重なっている) c2:: 判定対象のコリジョンインスタンス 返却値:: 1ピクセルでも重なっていれば true を返す.
-
#cover?(c2) ⇒ Boolean
当たり判定を行う(どちらかの領域がもう一方にすっぽり覆われている)) c2:: 判定対象のコリジョンインスタンス 返却値:: 領域が覆われていれば true を返す.
-
#covered?(pos1, c2, pos2) ⇒ Boolean
当たり判定を行う(レシーバがc2に覆われている) c2:: 判定対象のコリジョンインスタンス 返却値:: 領域が覆われていれば true を返す.
-
#covers?(pos1, c2, pos2) ⇒ Boolean
当たり判定を行う(レシーバがc2を覆っている) c2:: 判定対象のコリジョンインスタンス 返却値:: 領域が覆われていれば true を返す.
-
#dispose ⇒ Object
インスタンスの内容を解放する 返却値:: なし.
-
#initialize(rect, pos, circum = true) ⇒ CollisionEx
constructor
コリジョンのインスタンスを作成する 幅・高さが0以下のときは例外が発生する 内部では、矩形当たり判定相手の時でも対応できるように矩形情報に変換して同時に持っている。 そのとき、引数circumがtrueのときは、円を矩形の外接円と認識して、内部の矩形(正方形)の長さを算出する。 circumがfalseのときは、円を矩形の内接円と認識して、内部の矩形(正方形)の長さを算出する。 rect:: コリジョンを設定する範囲 pos:: コリジョンの位置 circum:: 矩形当たり判定とみなす時、円を外接円とするときはtrueを設定する。デフォルトはtrue 返却値:: 作成されたコリジョン.
-
#meet?(c2) ⇒ Boolean
当たり判定を行う(領域がピクセル単位で隣り合っている) c2:: 判定対象のコリジョンインスタンス 返却値:: 領域が隣り合っていれば true を返す.
-
#to_col ⇒ Object
Collisionクラスのインスタンスを生成する 自分自身から位置情報を除いてCollisionクラスのインスタンスを生成する 返却値:: Collision構造体.
Methods inherited from Collision
#bind, #initialize_copy, #to_ex
Constructor Details
#initialize(rect, pos, circum = true) ⇒ CollisionEx
コリジョンのインスタンスを作成する
幅・高さが0以下のときは例外が発生する 内部では、矩形当たり判定相手の時でも対応できるように矩形情報に変換して同時に持っている。 そのとき、引数circumがtrueのときは、円を矩形の外接円と認識して、内部の矩形(正方形)の長さを算出する。 circumがfalseのときは、円を矩形の内接円と認識して、内部の矩形(正方形)の長さを算出する。
- rect
-
コリジョンを設定する範囲
- pos
-
コリジョンの位置
- circum
-
矩形当たり判定とみなす時、円を外接円とするときはtrueを設定する。デフォルトはtrue
- 返却値
-
作成されたコリジョン
482 483 484 485 |
# File 'lib/Miyako/API/collision.rb', line 482 def initialize(rect, pos, circum = true) super(rect, circum) @pos = Point.new(*pos.to_a) end |
Instance Attribute Details
#pos ⇒ Object (readonly)
コリジョンの位置(Point構造体)
471 472 473 |
# File 'lib/Miyako/API/collision.rb', line 471 def pos @pos end |
Class Method Details
.collision?(c1, c2) ⇒ Boolean
当たり判定を行う(領域が重なっている)
- c1
-
判定対象のコリジョンインスタンス(1)
- c2
-
判定対象のコリジョンインスタンス(2)
- 返却値
-
1ピクセルでも重なっていれば true を返す
533 534 535 |
# File 'lib/Miyako/API/collision.rb', line 533 def CollisionEx.collision?(c1, c2) return Collision.collision?(c1, c1.pos, c2, c2.pos) end |
.cover?(c1, pos1, c2, pos2) ⇒ Boolean
当たり判定を行う(どちらかの領域がもう一方にすっぽり覆われている))
- c1
-
判定対象のコリジョンインスタンス(1)
- c2
-
判定対象のコリジョンインスタンス(2)
- 返却値
-
領域が覆われていれば true を返す
549 550 551 |
# File 'lib/Miyako/API/collision.rb', line 549 def CollisionEx.cover?(c1, pos1, c2, pos2) return Collision.cover?(c1, c1.pos, c2, c2.pos) end |
.covered?(c1, pos1, c2, pos2) ⇒ Boolean
当たり判定を行う(c1がc2に覆われている)
- c1
-
判定対象のコリジョンインスタンス(1)
- c2
-
判定対象のコリジョンインスタンス(2)
- 返却値
-
領域が覆われていれば true を返す
565 566 567 |
# File 'lib/Miyako/API/collision.rb', line 565 def CollisionEx.covered?(c1, pos1, c2, pos2) return Collision.covered?(c1, c1.pos, c2, c2.pos) end |
.covers?(c1, pos1, c2, pos2) ⇒ Boolean
当たり判定を行う(c1がc2を覆っている)
- c1
-
判定対象のコリジョンインスタンス(1)
- c2
-
判定対象のコリジョンインスタンス(2)
- 返却値
-
領域が覆われていれば true を返す
557 558 559 |
# File 'lib/Miyako/API/collision.rb', line 557 def CollisionEx.covers?(c1, pos1, c2, pos2) return Collision.covers?(c1, c1.pos, c2, c2.pos) end |
.meet?(c1, pos1, c2, pos2) ⇒ Boolean
当たり判定を行う(領域がピクセル単位で隣り合っている)
- c1
-
判定対象のコリジョンインスタンス(1)
- c2
-
判定対象のコリジョンインスタンス(2)
- 返却値
-
領域が隣り合っていれば true を返す
541 542 543 |
# File 'lib/Miyako/API/collision.rb', line 541 def CollisionEx.meet?(c1, pos1, c2, pos2) return Collision.meet?(c1, c1.pos, c2, c2.pos) end |
Instance Method Details
#collision?(c2) ⇒ Boolean
当たり判定を行う(領域が重なっている)
- c2
-
判定対象のコリジョンインスタンス
- 返却値
-
1ピクセルでも重なっていれば true を返す
497 498 499 |
# File 'lib/Miyako/API/collision.rb', line 497 def collision?(c2) return Collision.collision?(self, self.pos, c2, c2.pos) end |
#cover?(c2) ⇒ Boolean
当たり判定を行う(どちらかの領域がもう一方にすっぽり覆われている))
- c2
-
判定対象のコリジョンインスタンス
- 返却値
-
領域が覆われていれば true を返す
511 512 513 |
# File 'lib/Miyako/API/collision.rb', line 511 def cover?(c2) return Collision.cover?(self, self.pos, c2, c2.pos) end |
#covered?(pos1, c2, pos2) ⇒ Boolean
当たり判定を行う(レシーバがc2に覆われている)
- c2
-
判定対象のコリジョンインスタンス
- 返却値
-
領域が覆われていれば true を返す
525 526 527 |
# File 'lib/Miyako/API/collision.rb', line 525 def covered?(pos1, c2, pos2) return Collision.covered?(self, pos1, c2, pos2) end |
#covers?(pos1, c2, pos2) ⇒ Boolean
当たり判定を行う(レシーバがc2を覆っている)
- c2
-
判定対象のコリジョンインスタンス
- 返却値
-
領域が覆われていれば true を返す
518 519 520 |
# File 'lib/Miyako/API/collision.rb', line 518 def covers?(pos1, c2, pos2) return Collision.covers?(self, pos1, c2, pos2) end |
#dispose ⇒ Object
インスタンスの内容を解放する
- 返却値
-
なし
571 572 573 574 |
# File 'lib/Miyako/API/collision.rb', line 571 def dispose super @pos = nil end |