本篇只是为了记录我的一个程序,不是教程,不做检测,只是实现我的一个功能。
Unity的屏幕坐标和世界坐标。
如果有碰撞的话,可以用RayCast来检测
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit, 100, lay))
{
go = GameObject.CreatePrimitive(PrimitiveType.Cube);
go.transform.position = hit.point;
}
没有的话,可以这么做:
假如我是通过鼠标点击来获取屏幕上一点: Vector3 pos = Input.mousePosition;
//当Camera的方向变化时,再点击时pos的世界坐标也有所不同,所以,获取camera的forword
// Transform cam = Camera.main.transform;
// Vector3 screenPos = Camera.main.WorldToScreenPoint();
将坐标转成世界坐标:
pos.z = 10;
Vector3 wordPos = Camera.main.ScreenToWorldPoint(pos);
go = GameObject.CreatePrimitive(PrimitiveType.Cube);
go.transform.position = wordPos;