ดูวิธีใช้ API ตำแหน่งโฆษณาทันที หรือ Raycast คงที่ในแอปของคุณเอง
ข้อกำหนดเบื้องต้น
ตรวจสอบว่าคุณเข้าใจแนวคิด AR พื้นฐาน และวิธีกําหนดค่าเซสชัน ARCore ก่อนดำเนินการต่อ
ชื่อแนวคิด
ชื่อของแนวคิดและวิธีการบางอย่างอาจแตกต่างกันระหว่าง AR Foundation และ ARCore SDK สำหรับ Unity ซึ่งมีรายชื่ออยู่ในตารางด้านล่างเพื่อให้อ้างอิงได้ง่ายๆ
มูลนิธิ AR | ARCore SDK สำหรับ Unity |
Raycast ถาวร | ตำแหน่งโฆษณาทันใจ |
ARRaycastManager.AddRaycast(Vector2, float)
|
Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
|
ARRaycast
|
TrackableHit
|
(ไม่มีค่าเทียบเท่า) | InstantPlacementPoint
|
ARRaycast.trackingState
|
InstantPlacementPointTrackingMethod
|
ข้อกำหนดเบื้องต้น
คู่มือนี้จะถือว่าคุณได้ติดตั้งและกำหนดค่า Unity แล้ว หากไม่ โปรดดู การเริ่มต้นใช้งานส่วนขยาย ARCore สำหรับมูลนิธิ AR เพื่อดูขั้นตอนการติดตั้งและการตั้งค่า
กำหนดค่าเซสชันใหม่ด้วย ARRaycastManager
การวางแบบทันที (Raycast แบบต่อเนื่อง) พร้อมใช้งานทันทีด้วย AR แพ็กเกจรองพื้น ทำตามขั้นตอนต่อไปนี้เพื่อตั้งค่าฉาก
AR Foundation 4.x
เพิ่มออบเจ็กต์เกมที่กำหนดไว้ล่วงหน้า AR Session Origin และ AR Session
เพิ่มคอมโพเนนต์ AR Raycast Manager ลงใน ออบเจ็กต์เกม AR Session Origin
เมื่อ Raycast Prefab ไม่เป็นค่าว่าง ARRaycastManager
จะสร้างอินสแตนซ์ของ Prefab และซิงค์ท่าทางกับท่าทางของ
ARRaycast
AR Foundation 5.x
เพิ่มออบเจ็กต์เกมที่กำหนดไว้ล่วงหน้า XR Origin และ AR Session
เพิ่มคอมโพเนนต์ AR Raycast Manager ลงใน ออบเจ็กต์เกม XR Origin
เมื่อ Raycast Prefab ไม่เป็นค่าว่าง ARRaycastManager
จะสร้างอินสแตนซ์ของ Prefab และซิงค์ท่าทางกับท่าทางของ
ARRaycast
วางวัตถุ
ในเซสชัน ARCore ใหม่ ให้ทำการทดสอบ Hit โดยใช้
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 มีท่าทาง 3 มิติที่ถูกต้อง ARRaycast.trackingState
จะแสดงเป็น Tracking
มิเช่นนั้น จะขึ้นต้นด้วย Limited
และเปลี่ยนไปใช้ Tracking
เมื่อ ARCore มีท่าทาง 3 มิติที่แม่นยำ เมื่อสถานะการติดตามเปลี่ยนเป็น Tracking
ก็จะไม่เปลี่ยนกลับเป็น
Limited