两天我试图从相机中获得适当的光线。
我有一个脚本来模拟一把枪的反冲,它可以旋转Unity内置FirstPersonCharacter的相机。它用简单的cam.transform.Rotate(X, 0, 0);
旋转
但我无法从那里获得良好的光线,cam.transform.forward
是水平的,就像相机没有旋转和cam.ViewportToWorldPoint也不工作。
你们有什么想法我怎么能让它发挥作用?
答案 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);
}
}