我的相机将光线投射到屏幕中央,我有一个看向那个方向的物体。问题是,我做了这样的事情,某些键旋转相机,所以有一个新的中心,来自相机的光线也移动但对象没有看到新的方向
这是我的代码:
void Update (){
int x = Screen.width / 2;
int y = Screen.height / 2;
//Get centre of screen from camera
Ray ray = Camera.main.ScreenPointToRay (new Vector3 (x, y));
Debug.DrawRay (ray.origin, ray.direction * 1000, new Color (1f, 0.922f, 0.016f, 1f));
//Set object direction
object.transform.LookAt (ray.direction);
}
我非常感谢你的帮助,谢谢!
答案 0 :(得分:1)
我找到了解决方案。我没有看光线方向,而是使用GetPoint
从光线中得到一个点,并使对象看到它。现在工作正常。
答案 1 :(得分:0)
光线将从相机开始并朝向屏幕中间。因此,如果您希望每次更新时对象都能看到相机,那么方向就会出错,但如果对象不在屏幕中央,该怎么办?如果我误解了您的问题,请进一步评论和解释。我认为更好的方法是使用Camera.main.transform.forward
来获得相机的前进方向,你也可以将它放在Physics.Raycast
中。要总是看一下相机,你可以尝试object.transform.LookAt(Camera.main.transform.position, -Vector3.Up);
。
编辑:此外,如果您的意思是让对象看起来与相机的方向相同,您可以随时尝试object.transform.forward = Camera.main.transform.forward
,或跟上object.transform.rotation = Quaternion.LookRotation(Camera.main.transform.forward, Transform.up);
好吧新主意:
Ray ray = Camera.main.ViewportPointToRay(new Vector3(0.5F, 0.5F, 0));
RaycastHit hit;
if(Physics.Raycast(ray, out hit))
{
Vector3 point = hit.point;
object.transform.LookAt(point, Vector3.Up);
}