【发布时间】:2021-12-01 23:54:14
【问题描述】:
当我单击 3d 对象时,我需要将相机平移/移动到 3d 对象。我找到了下面的脚本。但是当我将它附加到一个物体上时,我点击相机移动到那里。如何解决这个问题。下面是脚本
using UnityEngine;
public class CamTest : MonoBehaviour {
Vector3 groundCamOffset;
Vector3 camTarget;
Vector3 camSmoothDampV;
private Vector3 GetWorldPosAtViewportPoint(float vx, float vy) {
Ray worldRay = camera.ViewportPointToRay(new Vector3(vx, vy, 0));
Plane groundPlane = new Plane(Vector3.up, Vector3.zero);
float distanceToGround;
groundPlane.Raycast(worldRay, out distanceToGround);
Debug.Log("distance to ground:" + distanceToGround);
return worldRay.GetPoint(distanceToGround);
}
void Start() {
Vector3 groundPos = GetWorldPosAtViewportPoint(0.5f, 0.5f);
Debug.Log("groundPos: " + groundPos);
groundCamOffset = camera.transform.position - groundPos;
camTarget = camera.transform.position;
}
void Update() {
if (Input.GetMouseButtonDown(0)) {
// Center whatever position is clicked
float mouseX = Input.mousePosition.x / camera.pixelWidth;
float mouseY = Input.mousePosition.y / camera.pixelHeight;
Vector3 clickPt = GetWorldPosAtViewportPoint(mouseX, mouseY);
camTarget = clickPt + groundCamOffset;
}
// Move the camera smoothly to the target position
camera.transform.position = Vector3.SmoothDamp(
camera.transform.position, camTarget, ref camSmoothDampV, 0.5f);
}
}
【问题讨论】:
标签: unity3d 3d camera pan isometric