上QQ阅读APP看书,第一时间看更新
1.15 锁定抛射体
与预测抛射体的着地点同样重要的是,开发能够瞄准抛射体的智能agent。如果橄榄球运动员agent不能传球就没有意思了。
准备工作
与前一节介绍的方法相同,我们只需要扩展Projectile类。
操作步骤
基于前一节内容的介绍,该方法很容易实现:
1. 创建GetFireDirection函数:
2. 求解相应的二次方程式:
3. 如果根据参数可以射中抛射体,就返回一个非0的direction向量:
运行原理
根据固定的速度值,解出相应的二次方程式的值,以获取目标方向(当至少存在一个值时),这个方向值不用归一化,因为在初始化抛射体时已经归一化这个向量了。
延伸阅读
注意当时间为负值时返回了一个空的方向,这意味着速度不够。解决这个问题的方法是定义一个函数,测试不同的速度后再射击这个抛射体。
另一个相关的改进是添加一个额外的bool类型参数,用于当有两个有效时间点时(意味着可能有两条弧线),就需要透过障碍物(比如墙体)射击: