12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- 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<Vector3> 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<Vector3>()
- {
- 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;
- }
- }
- }
|