using System; using System.Collections; using System.Collections.Generic; using UnityEngine; // 进入实验室的脚本 public class EnterLab : MonoBehaviour { public Transform targetPosition; // 目标位置 public Transform targetRotation; // 目标旋转(或直接指定一个 Quaternion) public GameObject targetObject; // 目标对象(如果有) public Camera camera; // 相机 public GameObject labUI; // 实验室UI public GameObject systemUI; // 系统UI public GameObject labCeiling; // 实验室天花板 public List hiddenObjectParents; // 实验室物体 public float cameraSize = 60f; private float moveSpeed = 6.0f; // 移动速度 private float rotationSpeed = 3.0f; // 旋转速度 private bool isMoving = false; public void OnMouseDown() { if (CameraMove.isStaticMove) { return; } print("点击了相机"); labCeiling.SetActive(true); systemUI.SetActive(false); camera.orthographicSize = cameraSize; // 隐藏两边UI foreach (GameObject obj in hiddenObjectParents) { foreach (Transform child in obj.transform) { child.gameObject.SetActive(false); } } MoveToTarget(); } public void MoveToTarget() { isMoving = true; CameraMove.isStaticMove = true; camera.orthographic = false; camera.fieldOfView = cameraSize; } void Update() { if (isMoving) { // 平滑移动 camera.transform.position = Vector3.Lerp(camera.transform.position, targetPosition.position, moveSpeed * Time.deltaTime); // 平滑旋转 camera.transform.rotation = Quaternion.Slerp(camera.transform.rotation, targetRotation.rotation, rotationSpeed * Time.deltaTime); // 检查是否接近目标位置和旋转 if (Vector3.Distance(camera.transform.position, targetPosition.position) < 0.1f && Quaternion.Angle(camera.transform.rotation, targetRotation.rotation) < 0.1f) { camera.transform.position = targetPosition.position; camera.transform.rotation = targetRotation.rotation; isMoving = false; CameraMove.isStaticMove = false; labUI.SetActive(true); if (targetObject!= null) { } } } } }