因此这是我的问题: 我想知道如何在屏幕中间生成对象,这意味着我想以World单位查找屏幕的宽度和高度值。
相机位置:0,23,-10
相机旋转度:60,0,0
所以我尝试了这个:
Vector3 screenWorldSize = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height, -10));
// In the Update function
If(Input.GetKeyDown(Keycode.P))
{
GameObject tempObject = Instantiate(gamePrefab);
tempObject.transform.position = new Vector3(screenWorldSize.x, 1.5f, 10f);
}
但是tempObject位置不正确(不在中间),所以我尝试Debug.Log(screenWorldSize)
并得到此结果(-10.3, 28.8, -20.0)
我尝试将Camera.main.ViewPortToWorldPoint()
与(0,0,-10)
和(1,0,-10)
结合使用,结果几乎相同。
有什么我不理解的东西吗? 如何在世界点中获得屏幕边缘?
答案 0 :(得分:0)
非常简单。您根本不需要宽度和高度,只需要方向即可。
SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setNamespaceAware(true);
如果您只想在距相机一定距离处创建对象,则可以执行此操作以获取其位置
// this is a vector matching the camera's direction
Vector3 cameraDirection = Camera.main.transform.rotation * Vector3.forward;
// this is the camera position
Vector3 cameraPosition = Camera.main.transform.position;
如果要在相机指向的另一个对象上生成对象,则需要这样做:
Vector3 position = cameraPosition + cameraDirection * distance;