Raycast,与 transform.forward 冲突
Raycast, conflict with transform.forward
我正在研究随机光线投射机制,但我遇到了一个问题:
当我在空中拍摄时,我的光线应该在我的相机 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);
}
}`
有什么建议吗?
Debug.DrawRay
"Draws a line from start to start + dir in world coordinates."
没关系。
然而,LineRenderer uses positions.
这是正确的:
b.GetComponent<LineRenderer>().SetPosition(1, cam.transform.position + cam.transform.forward);
我正在研究随机光线投射机制,但我遇到了一个问题:
当我在空中拍摄时,我的光线应该在我的相机 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);
}
}`
有什么建议吗?
Debug.DrawRay
"Draws a line from start to start + dir in world coordinates."
没关系。
然而,LineRenderer uses positions.
这是正确的:
b.GetComponent<LineRenderer>().SetPosition(1, cam.transform.position + cam.transform.forward);