找出相机世界的宽度和高度吗?

时间:2019-09-22 02:36:39

标签: c# android unity3d camera screen

因此这是我的问题: 我想知道如何在屏幕中间生成对象,这意味着我想以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)结合使用,结果几乎相同。

这是场景的图像。 Scene Image

有什么我不理解的东西吗? 如何在世界点中获得屏幕边缘?

1 个答案:

答案 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;