using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.Net; using TMPro; using Unity.VisualScripting; using UnityEngine; using UnityEngine.Timeline; public class CalibrationMarkerBehavior : MonoBehaviour { Vector3[] frustumCorners; List targetPositions; // Start is called before the first frame update void Start() { var camera = Camera.main; frustumCorners = new Vector3[4]; camera.CalculateFrustumCorners(camera.rect, camera.transform.position.y, camera.stereoActiveEye, frustumCorners); targetPositions = new List() { new Vector3(frustumCorners[0].x, 0, frustumCorners[0].y), new Vector3(frustumCorners[1].x, 0, frustumCorners[1].y), new Vector3(frustumCorners[2].x, 0, frustumCorners[2].y), new Vector3(frustumCorners[3].x, 0, frustumCorners[3].y), }; currentTarget = GameObject.Find("CalibrationMarker").transform.position; } int targetIndex = -1; Vector3 currentTarget = Vector3.zero; Vector3 normalizedTranslationVector = Vector3.zero; // Update is called once per frame void Update() { var marker = GameObject.Find("CalibrationMarker"); const float speed = 2.5f; if (Vector3.Distance(marker.transform.position, currentTarget) >= 0.05f) { marker.transform.position += Vector3.ClampMagnitude(speed * Time.deltaTime * normalizedTranslationVector, (currentTarget - marker.transform.position).magnitude); } else if (targetIndex < targetPositions.Count - 1) { targetIndex++; currentTarget = targetPositions[targetIndex]; normalizedTranslationVector = (currentTarget - marker.transform.position).normalized; } } }