Przewodnik dla programistów dotyczący błyskawicznego miejsca docelowego dla AR Foundation
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Dowiedz się, jak używać w swoich aplikacjach interfejsu Instant Placement API lub trwałych promieniowań.
Wymagania wstępne
Zanim przejdziesz dalej, upewnij się, że rozumiesz podstawowe zagadnienia związane z rozszerzoną rzeczywistością oraz że wiesz, jak skonfigurować sesję ARCore.
nazwy koncepcji,
Nazwy niektórych koncepcji i metod mogą się różnić między AR Foundation a ARCore SDK for Unity. W tabeli poniżej znajdziesz listę tych funkcji.
Wymagania wstępne
W tym przewodniku zakładamy, że masz już zainstalowaną i skonfigurowaną platformę Unity. Jeśli nie, zapoznaj się z Pierwsze kroki z rozszerzeniami ARCore dla AR Foundation, aby dowiedzieć się, jak je zainstalować i skonfigurować.
Funkcja błyskawicznego umieszczania (trwałe rzuty promieniowe) jest dostępna od razu po zainstalowaniu pakietu ARFoundation. Aby skonfigurować scenę, wykonaj te czynności.
AR Foundation 4.x
Dodaj wstępnie zdefiniowane obiekty gry AR Session Origin i AR Session.

Dodaj komponent AR Raycast Manager do obiektu gry AR Session Origin.

Jeśli wartość Raycast Prefab nie jest równa null, ARRaycastManager
utworzy instancję prefab i automatycznie zsynchronizuje jej pozę z pozą ARRaycast
.
AR Foundation 5.x
Dodaj wstępnie zdefiniowane obiekty gry XR Origin i AR Session.

Dodaj komponent AR Raycast Manager do obiektu gry XR Origin.

Jeśli wartość Raycast Prefab nie jest równa null, ARRaycastManager
utworzy instancję prefab i automatycznie zsynchronizuje jej pozę z pozą ARRaycast
.
AR Foundation 6.x
Dodaj wstępnie zdefiniowane obiekty gry XR Origin i AR Session.

Dodaj komponent AR Raycast Manager do obiektu gry XR Origin.

Jeśli wartość Raycast Prefab nie jest równa null, ARRaycastManager
utworzy instancję prefabu i automatycznie zsynchronizuje jego pozę z pozą ARRaycast
.
Umieszczenie obiektu
W nowej sesji ARCore przeprowadź test trafienia za pomocą funkcji ARRaycastManager.AddRaycast(Vector2, float)
.
public ARRaycastManager RaycastManager; // set from the Editor Inspector.
void Update()
{
Touch touch;
if (Input.touchCount < 1 || (touch = Input.GetTouch(0)).phase != TouchPhase.Began)
{
return;
}
if (EventSystem.current.IsPointerOverGameObject(touch.fingerId))
{
return;
}
ARRaycast raycast = RaycastManager.AddRaycast(touch.position, _estimateDistance);
if (raycast != null)
{
// You can instantiate a 3D object here if you haven’t set Raycast Prefab in the scene.
…
}
}
Monitorowanie stanu śledzenia ARRaycast
Jeśli ARCore ma dokładną pozę 3D, ARRaycast.trackingState
będzie równe Tracking
.
W przeciwnym razie zacznie się od Limited
, a po uzyskaniu przez ARCore dokładnej pozycji w 3D przejdzie na Tracking
. Gdy stan śledzenia zmieni się na Tracking
, nie wróci on do stanu Limited
.
O ile nie stwierdzono inaczej, treść tej strony jest objęta licencją Creative Commons – uznanie autorstwa 4.0, a fragmenty kodu są dostępne na licencji Apache 2.0. Szczegółowe informacje na ten temat zawierają zasady dotyczące witryny Google Developers. Java jest zastrzeżonym znakiem towarowym firmy Oracle i jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-14 UTC.
[null,null,["Ostatnia aktualizacja: 2025-07-14 UTC."],[[["\u003cp\u003eLearn to use the Instant Placement API or persistent raycasts in your AR apps.\u003c/p\u003e\n"],["\u003cp\u003eUnderstand fundamental AR concepts and ARCore session configuration as prerequisites.\u003c/p\u003e\n"],["\u003cp\u003eSet up your scene with AR Session Origin, AR Session, and AR Raycast Manager components.\u003c/p\u003e\n"],["\u003cp\u003ePlace objects by performing hit tests using \u003ccode\u003eARRaycastManager.AddRaycast\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eMonitor the \u003ccode\u003eARRaycast\u003c/code\u003e tracking state to determine the accuracy of the 3D pose.\u003c/p\u003e\n"]]],[],null,["# Instant Placement developer guide for AR Foundation\n\nLearn how to use the\n[Instant Placement API](/ar/develop/unity-arf/instant-placement/overview), or\n[persistent raycasts](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/raycast-manager.html#persistent-raycasts), in your own apps.\n\nPrerequisites\n-------------\n\nMake sure that you understand [fundamental AR concepts](/ar/develop/fundamentals)\nand how to [configure an ARCore session](/ar/develop/unity-arf/session-config) before proceeding.\n\nConcept names\n-------------\n\nNames of certain concepts and methods may differ between AR Foundation and the\nARCore SDK for Unity. These are listed in the table below for easy reference.\n\n|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| **AR Foundation** | **ARCore SDK for Unity** |\n| [Persistent raycasts](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/raycast-manager.html#:~:text=Persistent%20raycasts,ARRaycastManager%20component%20from%20script%20code.) | Instant Placement |\n| [ARRaycastManager.AddRaycast(Vector2, float)](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/raycast-manager.html#persistent-raycasts) | [Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)](https://developers.google.com/ar/reference/unity/class/GoogleARCore/Frame#raycastinstantplacement) |\n| [ARRaycast](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/api/UnityEngine.XR.ARFoundation.ARRaycast.html) | [TrackableHit](https://developers.google.com/ar/reference/unity/struct/GoogleARCore/TrackableHit) |\n| (No equivalence) | [InstantPlacementPoint](https://developers.google.com/ar/reference/unity/class/GoogleARCore/InstantPlacementPoint) |\n| [ARRaycast.trackingState](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/api/UnityEngine.XR.ARFoundation.ARTrackable-2.html#UnityEngine_XR_ARFoundation_ARTrackable_2_trackingState) | [InstantPlacementPointTrackingMethod](https://developers.google.com/ar/reference/unity/class/GoogleARCore/InstantPlacementPoint?#trackingmethod) |\n\nPrerequisites\n-------------\n\nThis guide assumes you have already installed and configured Unity. If not, see\nthe [Getting started with ARCore Extensions for AR Foundation](/ar/develop/unity-arf/getting-started-extensions)\nfor installation and setup steps.\n\nConfigure a new session with `ARRaycastManager`\n-----------------------------------------------\n\nInstant Placement (persistent raycasts) is available out of the box with the AR\nFoundation package. Follow these steps to set up your scene. \n\n### AR Foundation 4.x\n\n\u003cbr /\u003e\n\n1. Add the predefined game objects **AR Session Origin** and\n **AR Session**.\n\n2. Add the **AR Raycast Manager** component into the\n **AR Session Origin** game object.\n\nWhen Raycast Prefab is not null, [`ARRaycastManager`](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/raycast-manager.html)\nwill instantiate the prefab and automatically sync its pose with the pose of\n[`ARRaycast`](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/api/UnityEngine.XR.ARFoundation.ARRaycast.html).\n\n\u003cbr /\u003e\n\n### AR Foundation 5.x\n\n\u003cbr /\u003e\n\n1. Add the predefined game objects **XR Origin** and\n **AR Session**.\n\n2. Add the **AR Raycast Manager** component into the\n **XR Origin** game object.\n\nWhen Raycast Prefab is not null, [`ARRaycastManager`](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/raycast-manager.html)\nwill instantiate the prefab and automatically sync its pose with the pose of\n[`ARRaycast`](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/api/UnityEngine.XR.ARFoundation.ARRaycast.html).\n\n\u003cbr /\u003e\n\n### AR Foundation 6.x\n\n\u003cbr /\u003e\n\n1. Add the predefined game objects **XR Origin** and\n **AR Session**.\n\n2. Add the **AR Raycast Manager** component into the\n **XR Origin** game object.\n\nWhen Raycast Prefab is not null, [`ARRaycastManager`](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/raycast-manager.html)\nwill instantiate the prefab and automatically sync its pose with the pose of\n[`ARRaycast`](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/api/UnityEngine.XR.ARFoundation.ARRaycast.html).\n\n\u003cbr /\u003e\n\nPlace an object\n---------------\n\nIn a new ARCore session, perform a hit test using\n[`ARRaycastManager.AddRaycast(Vector2, float)`](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/api/UnityEngine.XR.ARFoundation.ARRaycastManager.html#UnityEngine_XR_ARFoundation_ARRaycastManager_AddRaycast_UnityEngine_Vector2_System_Single_). \n\n public ARRaycastManager RaycastManager; // set from the Editor Inspector.\n\n void Update()\n {\n Touch touch;\n if (Input.touchCount \u003c 1 || (touch = Input.GetTouch(0)).phase != TouchPhase.Began)\n {\n return;\n }\n\n if (EventSystem.current.IsPointerOverGameObject(touch.fingerId))\n {\n return;\n }\n\n ARRaycast raycast = RaycastManager.AddRaycast(touch.position, _estimateDistance);\n if (raycast != null)\n {\n // You can instantiate a 3D object here if you haven't set Raycast Prefab in the scene.\n ...\n }\n }\n\nMonitor the ARRaycast tracking state\n------------------------------------\n\nIf ARCore has an accurate 3D pose, the [`ARRaycast.trackingState`](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/api/UnityEngine.XR.ARFoundation.ARTrackable-2.html#UnityEngine_XR_ARFoundation_ARTrackable_2_trackingState) will be [`Tracking`](https://docs.unity3d.com/Packages/com.unity.xr.arsubsystems@4.2/api/UnityEngine.XR.ARSubsystems.TrackingState.html).\nOtherwise, it will start with [`Limited`](https://docs.unity3d.com/Packages/com.unity.xr.arsubsystems@4.2/api/UnityEngine.XR.ARSubsystems.TrackingState.html)\nand transition to [`Tracking`](https://docs.unity3d.com/Packages/com.unity.xr.arsubsystems@4.2/api/UnityEngine.XR.ARSubsystems.TrackingState.html) once ARCore has an accurate 3D pose. Once the tracking state becomes [`Tracking`](https://docs.unity3d.com/Packages/com.unity.xr.arsubsystems@4.2/api/UnityEngine.XR.ARSubsystems.TrackingState.html),\nit will not revert to\n[`Limited`](https://docs.unity3d.com/Packages/com.unity.xr.arsubsystems@4.2/api/UnityEngine.XR.ARSubsystems.TrackingState.html)."]]