物理演算
これまで遊んできたビデオゲームの多くには、何らかのかたちで物理が使われているかと思います。プレイヤーは、オブジェクトが重力の影響を受けて落下すると予想しています。オブジェクト同士、お互いをすり抜けるのではなくぶつかり合い、ぶつかったときには衝突音がでることなどが期待されます。
物理エンジンは、自然界の常識を人工的なゲームの世界で再現しようとしています。オブジェクトを現実にあるべき姿で動かせるように試みています。

PlayCanvasの物理演算は、オープンソースのBullet物理エンジンをWebAssemblyに移植したammo.jsによって動作します。物理演算はコンポーネントを通して扱います。RigidBodyコンポーネントはエンティティがどのように動くかを決め、Collisionコンポーネントは物理的な形状を与え、アルファ版のJointコンポーネントは複数のボディを互いに拘束します。同じコンポーネントが同じプロパティで、エディター、エンジン直接、PlayCanvas React、Web Componentsのどの方法で構築しても利用できます。このセクションの各ページでは、概念を一度説明した後、それぞれの環境での適用方法を示します。
このセクションでは次の内容を扱います。
- はじめに - 物理演算の有効化、重力、単位、シミュレーションの仕組み。
- RigidBody - Static、Dynamic、Kinematicのボディ、そのプロパティ、スリープ、テレポート。
- コリジョン形状 - プリミティブ、メッシュ、複合形状、オフセット、スケール。
- ボディを動かす - 力、インパルス、トルク、速度、Kinematicな運動。
- 衝突イベント - RigidBody同士の接触への応答。
- トリガーボリューム - ボディが領域に出入りしたことの検出。
- レイキャスティング - ピッキングや探査のために直線に沿ってシーンを問い合わせる。
- ジョイント - ヒンジ、スライダー、ボールジョイント、スプリング、壊れる溶接。
- ammo.jsを直接呼び出す - コンポーネントが公開していないBulletの機能を利用する。
- ammo.js以外の物理エンジン - 他の物理エンジンと、それらを統合する方法。
関連情報
- 衝突とトリガー - エディターで完全な物理シーンを構築するチュートリアル
- コードでRigidBodyを作成する - スクリプトから物理オブジェクトを生成するチュートリアル
- 車両物理 - レイキャスト車両を運転するチュートリアル
- PlayCanvas Reactの物理演算 - Reactで物理演算を有効化し使用するためのガイド
<pc-rigid-body>- Web ComponentsのRigidBodyリファレンス