Tìm hiểu cách sử dụng API Vị trí tức thì hoặc truyền phát tia liên tục trong ứng dụng của bạn.
Điều kiện tiên quyết
Hãy đảm bảo bạn hiểu rõ các khái niệm cơ bản về AR và cách định cấu hình một phiên ARCore trước khi tiếp tục.
Tên khái niệm
Tên của một số khái niệm và phương thức nhất định có thể khác nhau giữa AR Foundation và SDK ARCore dành cho Unity. Các thao tác này được liệt kê trong bảng dưới đây để bạn dễ dàng tham khảo.
Nền tảng AR | SDK ARCore dành cho Unity |
Truyền tia liên tục | Vị trí tức thì |
ARRaycastManager.AddRaycast(Vector2, float)
|
Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
|
ARRaycast
|
TrackableHit
|
(Không tương đương) | InstantPlacementPoint
|
ARRaycast.trackingState
|
InstantPlacementPointTrackingMethod
|
Điều kiện tiên quyết
Hướng dẫn này giả định rằng bạn đã cài đặt và định cấu hình Unity. Nếu chưa, hãy xem bài viết Bắt đầu sử dụng các tiện ích ARCore cho AR Foundation để biết các bước cài đặt và thiết lập.
Định cấu hình phiên mới với ARRaycastManager
Vị trí tức thì (truyền phát tia liên tục) có sẵn ngay từ gói với gói Nền tảng thực tế tăng cường. Làm theo các bước sau để dựng cảnh của bạn.
AR Foundation 4.x
Thêm các đối tượng trò chơi được xác định trước AR Session Origin và AR Session.
Thêm thành phần AR Raycast Manager vào đối tượng trò chơi AR Session Origin.
Khi Raycast Prefab không có giá trị rỗng, ARRaycastManager
sẽ tạo thực thể của prefab và tự động đồng bộ hoá tư thế của prefab với tư thế của
ARRaycast
.
Tổ chức AR 5.x
Thêm các đối tượng trò chơi được xác định trước XR Origin và AR Session.
Thêm thành phần AR Raycast Manager vào đối tượng trò chơi XR Origin.
Khi Raycast Prefab không có giá trị rỗng, ARRaycastManager
sẽ tạo thực thể của prefab và tự động đồng bộ hoá tư thế của prefab với tư thế của
ARRaycast
.
Đặt một đối tượng
Trong phiên ARCore mới, hãy thực hiện kiểm thử lượt truy cập bằng cách sử dụng 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.
…
}
}
Giám sát trạng thái theo dõi ARRaycast
Nếu ARCore có tư thế 3D chính xác, ARRaycast.trackingState
sẽ là Tracking
.
Nếu không, quá trình này sẽ bắt đầu bằng Limited
rồi chuyển sang Tracking
sau khi ARCore có tư thế 3D chính xác. Khi trạng thái theo dõi trở thành Tracking
, trạng thái đó sẽ không hoàn nguyên về Limited
.