-
シーン内においてゲームオブジェクトが物理的な
-
存在性を持つには何らかの Collider コンポーネントを
-
使って物理的な形状と対応する物理演算エンジンによる
-
扱われ方を定義する必要があります
-
Unity には 2 種類の物理演算エンジン...
-
すなわち 3D 用のものと 2D 用のものがあります
-
この 2 種の物理演算エンジンは相互に干渉しません
-
物理演算と Physics 2D の詳細については
-
下記リンク先の情報を参照してください
-
2D 物理演算エンジンを使う場合には
-
Collider 2D コンポーネントを使う必要があります
-
この Collider 2D コンポーネントは 4 種類存在し それぞれ
-
Circle Collider 2D
-
Box Collider 2D
-
Polygon Collider 2D
-
Edge Collider 2D と呼ばれます
-
これら 4 種はすべて汎用のベース Collider 2D から
-
派生したものであるため共通するプロパティが
-
多数あります
-
しかし Collider 2D コンポーネントはそれぞれ
-
特定の形に最適化されています
-
Circle Collider 2D は円形のオブジェクトに対して
-
使われるものですし
-
Box Collider 2D は四角形のオブジェクトに使われます
-
Polygon Collider 2D は複雑な
-
形状のオブジェクトに対して使われますし
-
Edge Collider 2D は地表など表面的なものに使われます
-
このエッジコライダーとポリゴンコライダーはとても似ています
-
複数のポイント... つまり頂点から構成され
-
それらの間がエッジでつながれているのです
-
最大の違いはポリゴンコライダーの場合は覆う空間が
-
閉じていなければいけない点です
-
逆にエッジコライダーは開いたままでなくてはならず
-
対象の個数に関わらずその表面を定義するものでなくてはなりません
-
エッジコライダーの良い使い方としては
-
ビジュアル的には複数のスプライトが使われている状況でも
-
地表面を一度に定義する場合があります
-
こうすることで複数の 2D コライダーを置かなくとも
-
一度に地表面が定義できるわけです
-
さて 2D コライダーにはすべて
-
インスペクターに対して公開されている共通プロパティが
-
2 つ存在します
-
Is Trigger と Material です
-
その他のコライダー固有のプロパティはその
-
2D コライダーの形状を定義するために使用されます
-
Is Trigger プロパティはコライダーをトリガーコライダーとして
-
振る舞わせるときに設定します
-
通常の 2D 物理演算コリジョン(衝突)では
-
2D 物理演算エンジンが 2D コライダー同士が
-
すり抜けてしまわないように処理します
-
他方の 2D トリガーコライダーは物理的なコリジョンは
-
生じさません 2D コリジョンメッセージではなく
-
2D トリガーメッセージを発するからです
-
このトリガーメッセージはシーン内で新たな
-
アクションを開始するために使用できます
-
Is Trigger とコライダーから
-
送信されるメッセージの詳細については
-
下記リンク先の情報を参照してください
-
Material プロパティは Collider 2D に使われる
-
Physics Material 2D への参照で
-
None(なし)にしておくこともできます
-
物理演算におけるマテリアルは
-
衝突時のコライダーの反応を定義するもので
-
コライダーの Bounciness と Friction が
-
調整可能です
-
弾むボールや滑る氷の床などを作る時には
-
Collider 2D ごとに異なる Physics Material 2D を
-
使用すれば実現できます
-
Physics Material 2D の詳細については
-
下記リンク先の情報を参照してください
-
Collider 2D を使うにはまずゲームオブジェクトに
-
アタッチする必要があります
-
Collider 2D コンポーネントをアタッチする方法は複数ありますが
-
ひとつには Add Component ボタンをクリックして
-
Physics 2D を選択し
-
Collider 2D Component を選択する方法があります
-
ゲームオブジェクトやコンポーネント
-
およびそれらの使い方については
-
下記リンク先の情報を参照してください
-
さて Collider 2D コンポーネントがアタッチされると
-
Unity は自動的に Collider 2D のサイズをスプライトに合わせようとします
-
この Collider 2D のサイズや形状が
-
希望と異なる場合にはインスペクター上で値を調整したり
-
Scene ビューで直接 Collider 2D を編集することで
-
自由に変更することができます
-
Collider 2D を Scene ビューで編集する場合は
-
Shift キーを押したまま行ってください
-
これで Scene ビューで 2D コライダーのギズモに
-
ハンドルが表示されるようになります
-
このハンドルはドラッグ可能です
-
なおエッジコライダーやポリゴンコライダーの場合には
-
表示されたハンドルをドラッグすると
-
コライダーのサイズが変更されるのではなく
-
コライダーの頂点が移動されて形状が変化します
-
またエッジコライダーやポリゴンコライダーでは
-
カーソルを何もないエッジに合わせて移動させてから
-
クリックすると新しい頂点が作成されます
-
この場合は新しいハンドルが表示され さらに
-
エッジ部分が緑色で強調表示されます
-
この他にもエッジコライダーやポリゴンコライダーでは
-
Ctrl キーを押しながらクリックすると
-
頂点を削除することができます
-
この場合はハンドルとエッジ部分が
-
赤色で強調表示されます
-
さてゲームオブジェクトでは Rigidbody 2D なしでも
-
Collider 2D を使えます
-
ただし 2D コリジョンやイベントのトリガーに参加するには
-
関連する 1 つ以上のゲームオブジェクトに
-
Rigidbody 2D がアタッチされていなくてはなりません
-
最適なパフォーマンスを得るためによく取られる手法としては
-
まず静的な/固定されている一方で他の 2D 物理演算には
-
関与させたいゲームオブジェクトには
-
Rigidbody コンポーネントはアタッチせず
-
Collider 2D コンポーネントをアタッチします
-
そして動的な/移動するゲームオブジェクトには
-
Collider 2D とRgidbody 2D をアタッチして
-
シーン内での各種干渉を行わせる方法があります
-
Physics 2D や Collider 2D および
-
コリジョンやトリガーの詳細については
-
下記リンク先の情報を参照してください