エンティティ操作
このチュートリアルでは、エンティティの位置 (Position) 、向き (Orientation) 、スケール (Scale) を変更する方法を紹介します。
エンティティは、PlayCanvasフレームワークを使用して構築されたほとんどのアプリケーションの基盤となります。エンティティは、プレイヤーキャラクター、弾丸、敵キャラクター、または単に空間上の点など、あらゆるものを表すことができます。
エンティティは、グラフノードの特殊な形態であり、pc.GraphNode
から多くの振る舞いを継承しています。以下で説明する操作は、グラフノードにも適用することができます。
エンティティ上で行う最も一般的な操作の1つは、そのトランスフォーム行列を変更することです。エンティティのローカルトランスフォームプロパティは、エンティティの位置、向き、スケールを決定し、すべての子エンティティにも影響を与えます。トランスフォームを操作する方法を学ぶことは、興味深くインタラクティブなアプリケーションを作る上で重要です。
ローカルとワールド座標
エンティティの移動や操作方法を理解する上で重要なのは、ローカル座標系とワールド座標系の理解です。ワールド座標 系はすべてのエンティティで共有されており、固定された原点 (0,0,0)
と固定された向きがあります。ワールド座標系では、(0,1,0)
が上を向いています。ローカル座標系はエンティティ自体に対する相対的な座標系です。したがって、ローカル原点はエンティティの位置であり、向きはエンティティの向きに従います。
Here is a visual representation of the world-space coordinate system (left) and the local-space coordinate system (right) of an entity:
ヒエラルキー (Hierarchy)
エンティティシステムを理解する上で重要な要素は、エンティティグラフまたはヒエラルキーです。エンティティはグラフノードの一種であり、親子関係を持ったグラフまたはヒエラルキーにまとめられます。各エンティティは1つの親を持ち、複数の子を持つことができます。子エンティティは親からの変換情報を継承します。エンティティのワールド変換行列は、ローカル変換を親エンティティのワールド変換行列と乗算することで計算されます。たとえば、子エンティティのローカル移動が(1,0,0)
であり、親エンティティのローカル移動が(0,1,0)
である場合、子エンティティのワールド位置は(1,1,0)
になります。