unity中 当鼠标点击三维物体时,摄像头主动靠近物体 写一个脚本
时间: 2024-04-30 10:24:14 浏览: 114
以下是一个示例脚本,可以实现当鼠标点击三维物体时,摄像头主动靠近物体:
```
using UnityEngine;
public class CameraZoom : MonoBehaviour
{
public float zoomSpeed = 10f; // 摄像头缩放速度
public float maxZoomDistance = 5f; // 摄像头最大缩放距离
public float minZoomDistance = 0.5f; // 摄像头最小缩放距离
private Camera mainCamera; // 主摄像头
private float currentZoomDistance = 0f; // 当前缩放距离
private bool isZooming = false; // 是否正在缩放
void Start()
{
mainCamera = Camera.main;
currentZoomDistance = maxZoomDistance;
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
// 检测鼠标点击的物体是否为三维物体
RaycastHit hit;
if (Physics.Raycast(mainCamera.ScreenPointToRay(Input.mousePosition), out hit))
{
if (hit.collider.tag == "ThreeDimensional")
{
isZooming = true;
}
}
}
if (isZooming)
{
// 缩放摄像头
currentZoomDistance -= Input.GetAxis("Mouse ScrollWheel") * zoomSpeed;
currentZoomDistance = Mathf.Clamp(currentZoomDistance, minZoomDistance, maxZoomDistance);
// 计算摄像头位置和旋转
Vector3 cameraPosition = transform.position + transform.forward * -currentZoomDistance;
Quaternion cameraRotation = Quaternion.LookRotation(transform.position - cameraPosition, Vector3.up);
// 设置摄像头位置和旋转
mainCamera.transform.position = cameraPosition;
mainCamera.transform.rotation = cameraRotation;
if (Input.GetMouseButtonUp(0))
{
isZooming = false;
}
}
}
}
```
这个脚本可以通过以下步骤使用:
1. 将脚本挂载到摄像头对象上;
2. 在场景中创建三维物体,并设置它们的 Tag 属性为 "ThreeDimensional";
3. 运行游戏,在场景中点击三维物体,摄像头就会缩放并靠近物体。
阅读全文