メインコンテンツまでスキップ

物理演算

これまで遊んできたビデオゲームの多くには、何らかのかたちで物理が使われているかと思います。プレイヤーは、オブジェクトが重力の影響を受けて落下すると予想しています。オブジェクト同士、お互いをすり抜けるのではなくぶつかり合い、ぶつかったときには衝突音がでることなどが期待されます。

物理エンジンは、自然界の常識を人工的なゲームの世界で再現しようとしています。オブジェクトを現実にあるべき姿で動かせるように試みています。

Physics Constraints

PlayCanvasの物理演算は、オープンソースのBullet物理エンジンをWebAssemblyに移植したammo.jsによって動作します。物理演算はコンポーネントを通して扱います。RigidBodyコンポーネントはエンティティがどのように動くかを決め、Collisionコンポーネントは物理的な形状を与え、アルファ版のJointコンポーネントは複数のボディを互いに拘束します。同じコンポーネントが同じプロパティで、エディター、エンジン直接、PlayCanvas React、Web Componentsのどの方法で構築しても利用できます。このセクションの各ページでは、概念を一度説明した後、それぞれの環境での適用方法を示します。

このセクションでは次の内容を扱います。

  • はじめに - 物理演算の有効化、重力、単位、シミュレーションの仕組み、一時停止と手動ステップの方法。
  • RigidBody - Static、Dynamic、Kinematicのボディ、そのプロパティ、スリープ、タイプごとの移動とスケーリングの方法。
  • コリジョン形状 - プリミティブ、メッシュ、複合形状、オフセット、スケール。
  • ボディを動かす - 力、インパルス、トルク、速度、Kinematicな運動。
  • 衝突イベント - RigidBody同士の接触への応答。
  • トリガーボリューム - ボディが領域に出入りしたことの検出。
  • レイキャスティング - ピッキングや探査のために直線に沿ってシーンを問い合わせる。
  • ジョイント - ヒンジ、スライダー、ボールジョイント、スプリング、壊れる溶接。
  • ammo.jsを直接呼び出す - コンポーネントが公開していないBulletの機能を利用する。
  • ammo.js以外の物理エンジン - 他の物理エンジンと、それらを統合する方法。

関連情報​