项目案例:判断目标点是否在角色视野范围内。
思路分析视野的大小由角度决定。 如果视野大小为90度,即角色面向正面,且距离角色位置任意一个向量与正面向量所成的角=45度,则该向量上的点位于视野内。 在这里,我们得到角色的视野方向,即前向方向,使得向量a从角色的位置到目标点。 为了得到向量b并求出这两个向量所成的角,判断=45度并求出所成的角,需要使用三角函数的反函数,即已知的三角函数的函数值来求出角度。 其中,用反余弦函数acos首先求出两个向量的点积,得到标量,然后反余弦函数将两个向量之间的弧度转换为弧度,判定码vector3nor vec=global.player.trrayer //紧接角色之前的向量vector3tem vec=transform.position-global.player.transform.position; //将目标点从角色标准化为向量//将向量标准化为两个向量的点积(标量) varv=vector3. dot (nor vec.normalized,temVec.normalized ) //而且逆ngdzjy求出夹角的弧度,这里的结果给出-1到1的弧度。 浮动角度=mathf.acos (v; angle *=Mathf.Rad2Deg; //弧度转速return angle=filedView * 0.5f; //filedView是视角,已知常数扩展
33558 www.Sina.com/: ab=|a|| b|Sina,b结果是一个向量。 根据右手定律,四根手指从a的方向向b旋转,拇指的方向是结果的方向。
33558 www.Sina.com/: ab=|a|| b|cosa,b毕竟是标量。
3358 www.Sina.com/: mathf.deg2rad=(pi *2)/360,Unity的常数
3358 www.Sina.com/: mathf.r ad2 deg=360/(pi *2),Unity的常数
要在Unity中计算Sin30的值,请先将角度转换为弧度
Sin30必须写为mathf.sin(30*(math.pi2/360 ) )或math.sin (30 mathf.deg2rad )。
Unity中的角度计算以弧度为单位,使用时需要转换