角度方向的光线投射
Raycast in angle direction
在 unity3d 中,我从玩家前方进行光线投射。但我也想从前方投射一些角度。
我试试这个
var dir = this.transform.TransformDirection(new Vector3(Mathf.Sin(angle), 0, Mathf.Cos(angle)));
Physics.Raycast(this.transform.position, -dir, out hit, 9999);
但是得到错误的结果。
请记住,通过使用 TransformDirection 将光线投射到的方向值与脚本附加到的变换进行比较。如果将角度设置为零,它将在脚本附加到的转换的正向方向上发射光线。如果你想让光线投射独立于变换所面对的位置,只需像这样执行 dir:
var dir = new Vector3(Mathf.Sin(angle), 0, Mathf.Cos(angle));
还要记住你的角度是什么单位? Mathf.Sin 和 Mathf.Cos 接受以弧度为单位的角度值,如果你想使用角度(0、90、180、270),你需要在计算 Sin 和 Cos 之前将它们转换为弧度。要做到这一点只需将 if 与 Rad/Deg 值相乘,如下所示:
angle = angle * Mathf.Deg2Rad;
然后像以前一样做剩下的事情。为了帮助你更多,我需要你提供更多信息(测试结果,你想要更具体的...)。
在 unity3d 中,我从玩家前方进行光线投射。但我也想从前方投射一些角度。 我试试这个
var dir = this.transform.TransformDirection(new Vector3(Mathf.Sin(angle), 0, Mathf.Cos(angle)));
Physics.Raycast(this.transform.position, -dir, out hit, 9999);
但是得到错误的结果。
请记住,通过使用 TransformDirection 将光线投射到的方向值与脚本附加到的变换进行比较。如果将角度设置为零,它将在脚本附加到的转换的正向方向上发射光线。如果你想让光线投射独立于变换所面对的位置,只需像这样执行 dir:
var dir = new Vector3(Mathf.Sin(angle), 0, Mathf.Cos(angle));
还要记住你的角度是什么单位? Mathf.Sin 和 Mathf.Cos 接受以弧度为单位的角度值,如果你想使用角度(0、90、180、270),你需要在计算 Sin 和 Cos 之前将它们转换为弧度。要做到这一点只需将 if 与 Rad/Deg 值相乘,如下所示:
angle = angle * Mathf.Deg2Rad;
然后像以前一样做剩下的事情。为了帮助你更多,我需要你提供更多信息(测试结果,你想要更具体的...)。