ここではUnityの物理演算機能の概要について説明します。物理演算はアクションゲーム等では必ずと言っていいほど使う重要な機能なので、しっかり理解しておくとよりスムーズにゲームを作ることができます。
※この記事で使用しているUnityのバージョン:Unity2019.1
物理演算とは
まず物理演算とは何かという話ですが、一言でいうと「物体の運動をシミュレーションすること」です。例えば、ボールを放り投げたら放物線を描いて落下しますよね?物理演算を行うことでそういった動きをゲーム上でも再現できるというわけです。
Unityには強力な物理演算エンジンが搭載されているので、現実世界のリアルな運動を再現できますし、逆にゲームならではの動き(2段ジャンプなど)をつけることもできます。また、使い方も簡単で物理や数学の勉強をしなくても物理演算を使うことができます。
2D/3Dゲーム用にそれぞれ物理演算機能がある
それでUnityには2Dゲーム用と3Dゲーム用にそれぞれ別の物理演算機能が搭載されています。コンポーネントの名前に「2D」とつくものは2Dゲーム用で、それ以外はすべて3Dゲーム用です。
なお、2D用の物理演算機能と3D用の物理演算機能は互いに影響しないほか、同じゲームオブジェクトに両方をアタッチすることができないので注意してください。
物理演算に使う色々な機能
Unityでは物理演算に使う機能が標準で色々用意されています。2D・3Dで多少種類に違いはありますが、主なものは次の5つです。
- コライダー(Collider)
- リジッドボディ(Rigidbody)
- ジョイント(Joint)
- エフェクター(Effector)
- 物理マテリアル(Physics Material)
コライダー(Collider)
コライダーはいわゆる「当たり判定」を表現するのに使うコンポーネントです。このコンポーネントを付けておくと、後述のリジッドボディを持つゲームオブジェクトと衝突するようになります。
コライダーの種類や使い方は「コライダー(Collider)の種類について」をご覧ください。
リジッドボディ(Rigidbody)
リジッドボディはゲームオブジェクトを物理演算で動かす際に使うコンポーネントで、物理演算の主役のような存在です。例えば物理演算でボールやキャラクターなどを動かしたい場合は、このコンポーネントとコライダーを一緒にアタッチする必要があります。
具体的な使い方は「リジッドボディ(Rigidbody)の使い方」をご覧ください。
ジョイント(Joint)
ジョイントはリジッドボディを他のゲームオブジェクトと連結するためのコンポーネントです。これを使うとドアのように開閉するゲームオブジェクトを作れたり、ばねで連結されたようなゲームオブジェクトを作ったりすることができます。
ジョイントの種類や使い方は「ジョイント(Joint)の種類と使い方」をご覧ください。
エフェクター(Effector)
エフェクターはゲームオブジェクトの物理的な動きに特殊効果を与えるコンポーネントで、今のところ2D専用です。これを使うと例えば一方向からのみ通り抜けられる床を作ったり、ベルトコンベアのように他のゲームオブジェクトを流す物体を作ったりできます。
エフェクターの種類や使い方は「エフェクター(Effector)の種類と使い方」をご覧ください。
物理マテリアル(Physics Material)
物理マテリアルは、あるオブジェクトに材質の物理的な特性を付加するために使います。設定項目は摩擦と反発係数の2つです。これを使うと例えば跳ね返るボールなどを作ることができます。
具体的な作り方や設定方法は「物理マテリアル(Physics Material)の作り方」をご覧ください。