在unity3d中,我从玩家前进光线投射。但是我也希望从前方射出一些角度。 我试试这个
var dir = this.transform.TransformDirection(new Vector3(Mathf.Sin(angle), 0, Mathf.Cos(angle)));
Physics.Raycast(this.transform.position, -dir, out hit, 9999);
但得到错误的结果。
答案 0 :(得分:3)
请记住,通过使用TransformDirection将被射线照射的方向值与变换附加到的脚本进行比较。如果将角度设置为零,它将在脚本附加的变换的前向方向上拍摄光线投影。如果你想让raycast独立于变换所面临的位置,那就像这样做:
var dir = new Vector3(Mathf.Sin(angle), 0, Mathf.Cos(angle));
还要记住角度在哪个单位? Mathf.Sin和Mathf.Cos以弧度为单位取角度值,如果你想在度数(0,90,180,270)中使用角度,你需要在计算Sin和Cos之前将它们转换为弧度。要做到这一点,只需乘以Rad / Deg值如下:
angle = angle * Mathf.Deg2Rad;
和以前一样做其余的事情。为了帮助您,我需要您提供更多信息(测试结果,您想要的更具体......)。