如何获得面对相机的光线?

时间:2017-03-28 12:52:29

标签: unity3d camera

两天我试图从相机中获得适当的光线。

我有一个脚本来模拟一把枪的反冲,它可以旋转Unity内置FirstPersonCharacter的相机。它用简单的cam.transform.Rotate(X, 0, 0);旋转 但我无法从那里获得良好的光线,cam.transform.forward是水平的,就像相机没有旋转和cam.ViewportToWorldPoint也不工作。

你们有什么想法我怎么能让它发挥作用?

1 个答案:

答案 0 :(得分:0)

使用cam.transform.Rotate(0,y,0)旋转相机时,可以围绕Y轴旋转相机。这基本上意味着您的相机保持水平,但向左和向右旋转(可能不是模拟反冲的最佳方式)。

要以类似反冲的方式垂直旋转相机,你可能应该将camera.transform.forward变为camera.transform.up,并使用一定的系数,如0.5f或其他。

更新,一些示例代码:

    if (Input.GetKeyDown(KeyCode.Space))
    {
        var direction = Vector3.Lerp(Camera.main.transform.forward, Camera.main.transform.up, 0.1f);
        Camera.main.transform.LookAt(Camera.main.transform.position + direction);
        var ray = new Ray(Camera.main.transform.position, direction);
    }
}