3D动作手游的辅助瞄准算法(二)

 

https://blog.csdn.net/u011403161/article/details/111068526

书接上回,我们只粗略的用公式表示了一下优先级,来体现相关性

T = distance * angle,即距离越近,视偏角越小,T越小,锁定优先级越高。

但是实际应用的时候,容易发现,这个公式不是很符合直觉:

背面剔除

例如,距离4米视角30°和距离1米视角120°的优先级是相同,

而120°代表怪物在玩家背后,不应该和前方的怪物有相同的优先级。

所以我们先只计算前方的怪物,前方没有怪物的话,再按距离查找后方最近的怪物

(因为在背后,所以这里就没有使用夹角,只用距离)

公式优化

除了T = distance * angle这样的简单相乘,还有很多其他公式也可以表示正相关性,这里先给出结论:

T = distance * Mathf.Sin(angle * Mathf.Deg2Rad);

这个公式可以理解为:

玩家->怪物这条向量,旋转到玩家forward方向的过程中,扫过的扇形面积。

有兴趣也可以试试其他公式,找到最符合“直觉”的那个,比如

可以使用距离的n次方(n>0),乘以夹角的余弦,正切等等

这样就可以了吗?

目前我们只考虑了静态的情况,实际上在游戏运行的时候,还要考虑其他因素,下期讲解

https://blog.csdn.net/u011403161/article/details/113435178

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值