Raycast,与transform.forward发生冲突

时间:2017-05-24 17:58:49

标签: c# unity3d unity5

我正在使用随机光线投射机制,但我遇到了一个问题: 当我在空中拍摄时,我的光线应该在我的相机transform.forward上呈现平行(如Debug.DrawRay中所示)。问题是LineRenderer采取了一个奇怪的方向。

这是我的代码:`void Shoot(){         RaycastHit点击;

    if (Physics.Raycast(Camera.main.transform.position, cam.transform.forward, out hit, range))
    {
        GameObject b = Instantiate(bulletPrefab, hit.point, transform.rotation);
        b.GetComponent<LineRenderer>().SetPosition(0, shootOrigin.transform.position);
        b.GetComponent<LineRenderer>().SetPosition(1, hit.point);
    }else
    {
        Debug.DrawRay(cam.transform.position, cam.transform.forward, Color.green, 100);
        GameObject b = Instantiate(bulletPrefab, transform.position, transform.rotation);
        b.GetComponent<LineRenderer>().SetPosition(0, shootOrigin.transform.position);
        b.GetComponent<LineRenderer>().SetPosition(1, cam.transform.forward);
        b.transform.GetChild(0).gameObject.SetActive(false);
    }
}`

有什么建议吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

Debug.DrawRayDraws a line from start to start + dir in world coordinates.

没关系。

然而,LineRenderer uses positions

这是正确的:

b.GetComponent<LineRenderer>().SetPosition(1, cam.transform.position + cam.transform.forward);