マップレイヤーを使用してオブジェクトを配置する
Maplayers を使用して、 GameObject を LightshipMap 上に追加します。 これらのオブジェクトは、マップが移動しても、マップ上の配置された場所にとどまります。 LayerGameObjectPlacementを使って、新しいレイヤーにオブジェクトを追加する方法を説明します。
前提条件
- Lightship MapsパッケージがインストールされたUnityプロジェクトが必要です。また、 LightshipMaps プレハブがシーンに追加されている必要があります。 まだの方は Getting Started with Lightship Maps をご覧ください。
手順
新しいMapLayerプレハブを追加します。
Project タブで、 Assets フォルダを選択します。
メニューから、 Assets > Create > Maps SDK > Map Layer Prefabs > GameObject Placement Layer の順に選択します。
レイヤーの名前を選択し、Enterキーを押します。
新しいMapLayerプレハブをシーンにドラッグ&ドロップします。 以下の画像では、LightshipMapsゲームオブジェクトの子として追加されていますが、シーン内の任意の場所にあれば動作します。
プレハブにGameObjectを追加します。
マップレイヤーの Inspector ビューを開きます。
レイヤーゲームオブジェクトの配置(スクリプト) の プレハブ にGameObjectを追加します。
MapLayerプレハブをLightshipMapsプレハブに追加します。
LightshipMapsプレハブの Inspector ビューに移動します。
MapLayers の下にある + をクリックして新しいレイヤーを追加します。
新しいマップレイヤーを選択します。
スクリプトでGameObjectをインスタンス化します。
GameObjectをインスタンス化するスクリプトで、
LayerGameObjectPlacement
というシリアライズ可能なフィールドを作成します。[SerializeField] private LayerGameObjectPlacement _cubeGOP;
オブジェクトをインスタンス化するメソッドで、 LayerGameObjectPlacement.PlaceInstance() 、オブジェクトをマップに配置する。 マップ上の正しい位置にインスタンス化するには、オブジェクトの位置(LatLng)を渡す必要があります。
private void PlaceObject(LatLng pos) => _cubeGOP.PlaceInstance(pos);