最近在使用Unity的转换矩阵的时候,遇到点问题,现在解决了,贴出来,大家有需要的可以拿走
using UnityEngine;
public class CameraTest : MonoBehaviour
{
void Start()
{
Vector3 p0 = new Vector3(0, 12.58f, 10);
Vector3 screenP = Camera.main.WorldToScreenPoint(p0);
Debug.Log(screenP);
Matrix4x4 mvp = Camera.main.projectionMatrix * Camera.main.worldToCameraMatrix;
Vector3 screenP1 = WorldToScreen(mvp, p0, Screen.width, Screen.height);
Debug.Log(screenP1);
}
Vector3 WorldToScreen(Matrix4x4 camMVP, Vector3 point, float renderWidth, float renderHeight)
{
Vector3 result;
result.x = camMVP.m00 * point.x + camMVP.m01 * point.y + camMVP.m02 * point.z + camMVP.m03;
result.y