Files
XRLib/Assets/Scripts/UVC/Factory/CameraController.cs
2025-06-23 20:06:15 +09:00

38 lines
1.2 KiB
C#

using System.Collections;
using UnityEngine;
using UVC.Core;
namespace UVC.Factory
{
public class CameraController : SingletonScene<CameraController>
{
public float moveSpeed = 5.0f;
public float rotateSpeed = 100.0f;
private Coroutine focusCoroutine;
public void FocusOnTarget(Transform target, float distance)
{
if (focusCoroutine != null)
{
StopCoroutine(focusCoroutine);
}
focusCoroutine = StartCoroutine(FocusRoutine(target, distance));
}
private IEnumerator FocusRoutine(Transform target, float distance)
{
Vector3 targetPosition = target.position - transform.forward * distance;
Quaternion targetRotation = Quaternion.LookRotation(target.position - transform.position);
while (Vector3.Distance(transform.position, targetPosition) > 0.01f)
{
transform.position = Vector3.Lerp(transform.position, targetPosition, Time.deltaTime * moveSpeed);
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * rotateSpeed);
yield return null;
}
}
}
}