admin 管理员组文章数量: 1086019
3D动作手游的辅助瞄准算法(一)
前言
手机上的动作游戏,一般操作方式都是,
左边摇杆控制移动,右边滑屏旋转视角,
总的来说操作起来,没有键鼠来的精准,
所以大多数的手游,需要辅助瞄准系统。
已知条件
最简单的情况,我们先假设玩家与怪物都在一个平面上(y=0),并且所有怪物都相同。
那我们可以获取到:
1.玩家的坐标,
Vector3 p = Player.transform.position;
2.玩家的朝向,
Vector3 f = Player.transform.forward;
3.怪物的坐标,
Vector3 m = Monster.transform.position;
量化锁定优先级
接下来,我们要在不同的怪物身上计算它的锁定优先级。
那么如何计算呢?
1.按照直觉,离玩家越近的怪物,优先级应该越高。
2.除此之外,相同距离条件下,应该是越靠近玩家视野中央的怪优先级越高。
距离我们很好得到:
float distance = Vector3.Distance(p,m);
"靠近视野中央",换句话说就是:f与玩家->怪物这个向量的夹角越小:
float angle = Vector3.Angle(f,m-p);
那么最后,量化值T,如何用这两个数据计算呢?
我们先假定T越小,代表优先级越高。
不难发现,T与distance和angle都是正相关的,
因为距离越近,夹角越小,优先级越高,即
float T = distance * angle;
但是实际应用时,发现需要改进:
本文标签: 3D动作手游的辅助瞄准算法(一)
版权声明:本文标题:3D动作手游的辅助瞄准算法(一) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1687941203a160098.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论