Unity|关于player视野范围的那些解决办法

[判断物体是否在主角前方60°、距离小于10的范围内]

  • 解决思路:

    判断是否在前方要运用到点积,公式为a•b=|a||b|cosθ,所以只需要判断cosθ(物体与主角正前方的夹角为θ)与cos30°的大小关系。余弦函数在0~90°之间,函数值随着角度的增大反而减小,所以当cosθ>cos30°时,θ<30°,在范围内;当cosθ30°,不在范围内;

    判断距离是否小于10,只需求出物体与主角之间的模长,与10进行比较即可。

Unity|关于player视野范围的那些解决办法


  • 在Unity中实现:(三种方法)

    Quaternion.AngleAxis(30,transform.up)*transform.forward:表示将向量(0,0,1)绕Y轴旋转30°,会得到一个新向量。

Unity|关于player视野范围的那些解决办法

Unity|关于player视野范围的那些解决办法

  •  点积公式:a•b=|a||b|cosθ,即cosθ=(a•b)/(|a||b|)。当a、b都是单位向量时,它返回1个-1.0~1.0之间的一个值,所以|a|、|b|都是1,即cosθ=(a•b):

Unity|关于player视野范围的那些解决办法

  • 在上个方法的基础上,通过cosθ的值求出θ:(Mathf.Rad2Deg:单位弧度的度数。

Unity|关于player视野范围的那些解决办法

  • 通过Vector3.Angle()得出夹角,该函数返回值为0~180.

Unity|关于player视野范围的那些解决办法



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烫青菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值