अपने ऐप्लिकेशन में इंस्टैंट प्लेसमेंट एपीआई या नियमित तौर पर रेकास्ट को इस्तेमाल करने का तरीका जानें.
ज़रूरी शर्तें
आगे बढ़ने से पहले, पक्का करें कि आपने बुनियादी एआर (ऑगमेंटेड रिएलिटी) सिद्धांत और ARCore सेशन को कॉन्फ़िगर करने का तरीका समझ लिया है.
कॉन्सेप्ट के नाम
कुछ सिद्धांतों और तरीकों के नाम, AR Foundation और Unity के लिए ARCore SDK टूल के बीच अलग-अलग हो सकते हैं. इन्हें आसानी से समझने के लिए, इन्हें नीचे टेबल में दिखाया गया है.
एआर (ऑगमेंटेड रिएलिटी) फ़ाउंडेशन | Unity के लिए ARCore SDK टूल |
लगातार मिलने वाले रेकास्ट | इंस्टैंट प्लेसमेंट |
ARRaycastManager.AddRaycast(Vector2, float)
|
Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
|
ARRaycast
|
TrackableHit
|
(कोई समतुल्यता नहीं) | InstantPlacementPoint
|
ARRaycast.trackingState
|
InstantPlacementPointTrackingMethod
|
ज़रूरी शर्तें
इस गाइड में यह माना गया है कि आपने Unity को पहले ही इंस्टॉल और कॉन्फ़िगर कर लिया है. अगर ऐसा नहीं है, तो एआर फ़ाउंडेशन के लिए ARCore एक्सटेंशन के इस्तेमाल का तरीका देखें.
ARRaycastManager
के साथ नया सेशन कॉन्फ़िगर करें
इंस्टैंट प्लेसमेंट (परसिस्टेंट रेकास्ट) की सुविधा, एआर फ़ाउंडेशन पैकेज के साथ बाहर मिलेगी. अपना सीन सेट अप करने के लिए यह तरीका अपनाएं.
एआर फ़ाउंडेशन 4.x
पहले से तय गेम ऑब्जेक्ट AR Session Origin और AR Session जोड़ें.
AR Session Origin गेम ऑब्जेक्ट में, AR Raycast Manager कॉम्पोनेंट जोड़ें.
अगर Raycast Prefab शून्य नहीं है, तो ARRaycastManager
प्रीफ़ैब को इंस्टैंशिएट करेगा. साथ ही, उसके पोज़ को ARRaycast
के पोज़ के साथ अपने-आप सिंक कर देगा.
एआर फ़ाउंडेशन 5.x
पहले से तय गेम ऑब्जेक्ट XR Origin और AR Session जोड़ें.
XR Origin गेम ऑब्जेक्ट में, AR Raycast Manager कॉम्पोनेंट जोड़ें.
अगर Raycast Prefab शून्य नहीं है, तो ARRaycastManager
प्रीफ़ैब को इंस्टैंशिएट करेगा. साथ ही, उसके पोज़ को ARRaycast
के पोज़ के साथ अपने-आप सिंक कर देगा.
कोई ऑब्जेक्ट रखें
नए ARCore सेशन में, 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.
…
}
}
ARRaycast को ट्रैक करने की स्थिति को मॉनिटर करें
अगर ARCore का 3D पोज़ सटीक है, तो ARRaycast.trackingState
Tracking
होगा.
अगर ऐसा नहीं किया जाता है, तो यह Limited
से शुरू होगा और ARCore के सटीक 3D पोज़ के बाद, यह Tracking
पर ट्रांसफ़र हो जाएगा. ट्रैकिंग की स्थिति Tracking
हो जाने के बाद,
यह वापस
Limited
पर नहीं सेट होगी.