射线方法(纯计算,无物理)
var leftButtom = new Vector3(0, 0, 12);
var leftTop = new Vector3(0, Screen.height, 12);
var rightTop = new Vector3(Screen.width, Screen.height, 12);
var rightButtom = new Vector3(Screen.width, 0, 12);
var plane = new Plane(PlaneGameObject.transform.up, PlaneGameObject.transform.position);
var ray_leftButtom = m_camera.ScreenPointToRay(leftButtom);
var ray_leftTop = m_camera.ScreenPointToRay(leftTop);
var ray_rightTop = m_camera.ScreenPointToRay(rightTop);
var ray_rightButtom = m_camera.ScreenPointToRay(rightButtom);
Debug.DrawRay(ray_leftButtom.origin, ray_leftButtom.direction, Color.white, 1f);
Debug.DrawRay(ray_leftTop.origin, ray_leftTop.direction, Color.white, 1f);
Debug.DrawRay(ray_rightTop.origin, ray_rightTop.direction, Color.white, 1f);
Debug.DrawRay(ray_rightButtom.origin, ray_rightButtom.direction, Color.white, 1f);
float enter = 0;
if (plane.Raycast(ray_leftButtom, out enter))
{
Cubes[0].transform.position = ray_leftButtom.GetPoint(enter);
}
if (plane.Raycast(ray_leftTop, out enter))
{
Cubes[1].transform.position = ray_leftTop.GetPoint(enter);
}
if (plane.Raycast(ray_rightTop, out enter))
{
Cubes[2].transform.position = ray_rightTop.GetPoint(enter);
}
if (plane.Raycast(ray_rightButtom, out enter))
{
Cubes[3].transform.position = ray_rightButtom.GetPoint(enter);
}