[判断物体是否在主角前方60°、距离小于10的范围内]
- 解决思路:
判断是否在前方要运用到点积,公式为a•b=|a||b|cosθ,所以只需要判断cosθ(物体与主角正前方的夹角为θ)与cos30°的大小关系。余弦函数在0~90°之间,函数值随着角度的增大反而减小,所以当cosθ>cos30°时,θ<30°,在范围内;当cosθ30°,不在范围内;
判断距离是否小于10,只需求出物体与主角之间的模长,与10进行比较即可。
- 在Unity中实现:(三种方法)
Quaternion.AngleAxis(30,transform.up)*transform.forward:表示将向量(0,0,1)绕Y轴旋转30°,会得到一个新向量。
- 点积公式:a•b=|a||b|cosθ,即cosθ=(a•b)/(|a||b|)。当a、b都是单位向量时,它返回1个-1.0~1.0之间的一个值,所以|a|、|b|都是1,即cosθ=(a•b):
- 在上个方法的基础上,通过cosθ的值求出θ:(Mathf.Rad2Deg:单位弧度的度数。)
- 通过Vector3.Angle()得出夹角,该函数返回值为0~180.