Class: Miyako::CollisionEx

Inherits:
Collision show all
Defined in:
lib/Miyako/API/collision.rb

Overview

位置情報付き矩形当たり判定領域(コリジョン)クラス

コリジョンの範囲は、元データ(スプライト等)の左上端をとして考案する コリジョンで使用する値は、実数での設定が可能

Instance Attribute Summary collapse

Attributes inherited from Collision

#body, #center, #radius, #rect

Class Method Summary collapse

Instance Method Summary collapse

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

#posObject (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 を返す

Returns:

  • (Boolean)

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 を返す

Returns:

  • (Boolean)

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 を返す

Returns:

  • (Boolean)

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 を返す

Returns:

  • (Boolean)

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 を返す

Returns:

  • (Boolean)

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 を返す

Returns:

  • (Boolean)

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 を返す

Returns:

  • (Boolean)

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 を返す

Returns:

  • (Boolean)

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 を返す

Returns:

  • (Boolean)

518
519
520
# File 'lib/Miyako/API/collision.rb', line 518

def covers?(pos1, c2, pos2)
  return Collision.covers?(self, pos1, c2, pos2)
end

#disposeObject

インスタンスの内容を解放する

返却値

なし


571
572
573
574
# File 'lib/Miyako/API/collision.rb', line 571

def dispose
  super
  @pos = nil
end

#meet?(c2) ⇒ Boolean

当たり判定を行う(領域がピクセル単位で隣り合っている)

c2

判定対象のコリジョンインスタンス

返却値

領域が隣り合っていれば true を返す

Returns:

  • (Boolean)

504
505
506
# File 'lib/Miyako/API/collision.rb', line 504

def meet?(c2)
  return Collision.meet?(self, self.pos, c2, c2.pos)
end

#to_colObject

Collisionクラスのインスタンスを生成する

自分自身から位置情報を除いてCollisionクラスのインスタンスを生成する

返却値

Collision構造体


490
491
492
# File 'lib/Miyako/API/collision.rb', line 490

def to_col
  Collision.new(@rect)
end