Делаю вторую часть урока Getting Started With ARFoundation in Unity (ARKit, ARCore). Здесь, для работы с объектом автор использует метод ARSessionOrigin.Raycast. Но в редакторе выдаётся ошибка, что такого метода нет:
error CS1061: ‘ARSessionOrigin’ does not contain a definition for ‘Raycast’ and no accessible extension method ‘Raycast’ accepting a first argument of type ‘ARSessionOrigin’ could be found (are you missing a using directive or an assembly reference?)
Дело в том, что урок делали по ARKit экспериментальной версии и теперь (в версии 2.1.0+) нужно делать немного по другому.
Эта строка нам не подходит:
arOrigin.Raycast(screenCenter, hits, TrackableType.Planes);
Придётся заменить часть кода, но сначала в редакторе Unity в окне Иерархии добавим компонент для AR Session Origin:
▶ ▶ ▶
Можно было добавить программно, но будет не так наглядно.
Далее изменим код для метода UpdatePlacementPose:
private void UpdatePlacementPose()
{
var screenCenter = Camera.current.ViewportToScreenPoint(new Vector3(0.5f, 0.5f));
var hits = new List<ARRaycastHit>();
var raycastManager = FindObjectOfType<ARRaycastManager>(); // Это лучше перенести в Start(), чтобы не вызывалось при каждом апдейте
raycastManager.Raycast(screenCenter, hits, TrackableType.Planes);
placementPoseIsValid = hits.Count > 0;
if (placementPoseIsValid)
{
placementPose = hits[0].pose;
}
}
- Добавьте на сцену объект с компонентом ARInputManager (куда угодно)
- К объекту «AR Camera» добавьте компонент ARCameraManager
- Используйте метод Raycast, входящий в ARRaycastManager (ранее он был в составе ARSessionOrigin)
- Интерфейсы TryGet/TryAdd/TryRemove были переименованы на Get/Add/RemoveГид по миграции
- C#: Сравнить два массива - 12.12.2024
- EVE-Online: Фильтры каналов - 23.11.2024
- Не приходит СМС для авторизации на сайте Госуслуги - 01.11.2024