12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class CameraLerpMoveController : MonoSingleton<CameraLerpMoveController>
- {
- private Transform cameraMoveTarget;
- private Camera mainCamera;
- private bool isMoveLerp;
- public static float moveLerpSpeed = 2;
- public static float rotLerpSpeed = 2;
- private RoamCameraController m_RoamCameraController;
-
- public void Start()
- {
- mainCamera = Camera.main;
- if (mainCamera == null)
- {
- mainCamera = GameObject.FindObjectOfType<Camera>();
- }
- if (mainCamera.GetComponent<RoamCameraController>() != null)
- {
- m_RoamCameraController = mainCamera.GetComponent<RoamCameraController>();
- }
- }
- public void SetCameraMoveTarget(Transform target)
- {
- cameraMoveTarget = target;
- isMoveLerp = true;
- }
- // Update is called once per frame
- void Update()
- {
- if (!isMoveLerp || cameraMoveTarget == null) return;
- if (m_RoamCameraController != null)
- {
- m_RoamCameraController.Focus(cameraMoveTarget.transform.position,cameraMoveTarget.transform.rotation.eulerAngles,moveLerpSpeed);
-
- isMoveLerp = false;
- }
- else
- {
- mainCamera.transform.position = Vector3.Lerp(mainCamera.transform.position, cameraMoveTarget.transform.position, moveLerpSpeed * Time.deltaTime);
- mainCamera.transform.rotation = Quaternion.Lerp(mainCamera.transform.rotation, cameraMoveTarget.transform.rotation, rotLerpSpeed * Time.deltaTime);
-
- if (Vector3.Distance(mainCamera.transform.position, cameraMoveTarget.transform.position) < 0.05f
- && Quaternion.Angle(mainCamera.transform.rotation, cameraMoveTarget.transform.rotation) < 0.05f)
- {
- isMoveLerp = false;
- }
- else if (CameraMoveCheck())
- {
- isMoveLerp = false;
- }
- }
- }
- public bool CameraMoveCheck()
- {
- return Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.D) || Input.GetMouseButtonDown(1);
- }
- }
|