当我们的摄像机旋转之后,如果直接使用Camera.main.ScreenToWorldPoint(Input.mousePosition);
获得的坐标是有问题的,需要自己再次做一下转化。
脚本:
Vector3 screenPos = Input.mousePosition;
screenPos.z = 5.0f;
Vector3 p1 = Camera.main.ScreenToWorldPoint(screenPos);
Vector3 p0 = Camera.main.transform.position;
float h2 = 0.0f - p0.z;
float h1 = p1.z - p0.z;
Vector3 dir = p1 - p0;
dir.z = 0.0f;
float d1 = dir.magnitude;
float d2 = d1 * h2 / h1;
Vector3 p2 = p0 + dir.normalized * d2;
p2.z = 0;
原理
本博客引用自:https://blog.csdn.net/qq302756113/article/details/82968976?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=1328665.20683.16160562509862587&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control