
Я разработал 3D-модель, имеющую пол и два цилиндра (для закругленных колонн) в единство. Я написал сценарий для навигации, но не могу видеть путь навигации на устройстве Android, тогда как в редакторе Unity я получаю строку навигации.
Я использую два файла сценариев:
- NavigationTarget.cs
с использованием UnityEngine;
публично класс NavigationTarget: MonoBehaviour {
} - NewIndoorNav.cs
с использованием System.Collections .Generic;
с использованием System.Linq;
с использованием Unity.AI.Navigation;
с использованием UnityEngine;
с использованием UnityEngine.AI;
с использованием UnityEngine.XR.ARFoundation;
публичный класс NewIndoorNav : MonoBehaviour {
[SerializeField] частный Transform player;
[SerializeField] частный ARTrackedImageManager m_TrackedImageManager;
[SerializeField] частный GameObject trackedImagePrefab;
[SerializeField] частная строка LineRenderer;
частный список NavigationTargets = new List();
частный NavMeshSurface navMeshSurface;
частный NavMeshPath navMeshPath;
частный GameObject NavigationBase;
private void Start() {
navMeshPath = new NavMeshPath();}Код: Выделить всё
// disable screen dimming Screen.sleepTimeout = SleepTimeout.NeverSleep;
private void Update() {
if (navigationBase != null && NavigationTargets.Count > 0 && navMeshSurface != null ) {
//navMeshSurface.BuildNavMesh();
NavMesh.CalculatePath(player.position, NavigationTargets[0].transform.position, NavMesh.AllAreas, navMeshPath);private void OnEnable() => m_TrackedImageManager.trackablesChanged.AddListener(OnChanged);Код: Выделить всё
if (navMeshPath.status == NavMeshPathStatus.PathComplete) { line.positionCount = navMeshPath.corners.Length; line.SetPositions(navMeshPath.corners); } else { line.positionCount = 0; } }
Private void OnDisable() => m_TrackedImageManager.trackablesChanged.RemoveListener(OnChanged);
private void OnChanged(ARTrackablesChangedEventArgs eventArgs) {
foreach (var newImage in eventArgs.added) {navigationBase = GameObject.Instantiate(trackedImagePrefab);}Код: Выделить всё
navigationTargets.Clear(); navigationTargets = navigationBase.transform.GetComponentsInChildren().ToList(); navMeshSurface = navigationBase.transform.GetComponentInChildren(); } foreach (var updatedImage in eventArgs.updated) { navigationBase.transform.SetPositionAndRotation(updatedImage.pose.position, Quaternion.Euler(0, updatedImage.pose.rotation.eulerAngles.y, 0)); } foreach (var removedImage in eventArgs.removed) { }
Подробнее здесь: https://stackoverflow.com/questions/790 ... and-run-in